Add support for mixins and fluid interface for FC objects

I wrote this about a year ago to simplify the process of writing plugins and to improve code maintainability. I recently stumbled upon this repo again so I thought I'd submit and see what happens.
Fluid Mixins
This PR does 2 things:

Allows mixins to be added to any FC* objects
Adds a fluid interface for any methods that don't return anything.

Mixins
By default, it is not possible to override or extend any of the FC* objects in JW Lua because objects that are tied to their underlying C++ implementation are not tables. So through a little bit of magic with proxying, this PR enables new methods and properties to be added. If needed, the original functionality can always be accessed.
In short:

Existing methods can be overridden
New methods can be added
New properties can be added
Existing properties follow original behaviour (eg whether read-only or writable)
Original method is always accessible by appending a trailing underscore to the method name eg SetText_(foo)

Fluid Interface
This PR also adds a fluid interface in an effort to make writing plugins a little more DRY-friendly. The fluid interface works by returning the 'this' value from any method that would otherwise return nothing. Methods that return nil or false are not affected by this. Only methods that return zero values will have the fluid interface applied.
Small Example
Here's an example of creating a window with some static text the standard way:
local window = finale.FCCustomLuaWindow()

local str = finale.FCString()
str.LuaString = 'this is some text'
window:CreateStatic(10, 10):SetText(str)

window:ExecuteModal(nil)

Now, if we include the Fluid Mixin library, immediately we have some improvements:
local window = finale.FCCustomLuaWindow()

window:CreateStatic(10, 10):SetText(finale.FCString():SetLuaString('this is some text'))

window:ExecuteModal(nil)

If we were to then override the SetText method so that it accepts plain strings like so:
mixin.register_default('FCCtrlStatic', 'SetText', function(this, str)
	if type(str) == 'string' then
		local temp = str
		str = finale.FCString():SetLuaString(temp) -- This works because of the fluid interface
	end

	-- Trailing underscore is used to refer to the original method
	this:CreateStatic_(str)

	-- By not returning a value (copying the behaviour of the original method), the fluid interface is maintained
end)

The code could be reduced even further to this:
local window = finale.FCCustomLuaWindow()

window:CreateStatic(10, 10):SetText('this is some text')

window:ExecuteModal(nil)

In the example above, the same mixin could also be applied on mass by passing an array of classes and or method names.
There are other ways in which this could be used including:

Fix methods that have bugs
Where possible, allow methods to accept Lua types (eg string where FCString, array of strings where FCStrings, etc)
Add additional high level functionality (I have written some of these for dialogs, which was especially useful in reducing boilerplating)
In the absence of the ability to inherit from FC* objects, named mixins can be used to create subclasses

I believe all of these could offer significant DX improvements and make it easier to write JW Lua plugins.
There are other things I could add, depending on the direction that you want to go in. For example, I could automate the acceptance of Lua data types by introducing a secondary mixin layer, separate to user defined mixins. You could even use it as the basis for creating an whole higher-level framework for creating plugins, with greater abstraction and big reductions in boilerplate (which is something I'd personally like to see). There are plenty of options.
Let me know if I've missed something from the style guide. I've tried to follow it but I don't use Lua often so I may have overlooked something.

I quite like this, especially as I would like to see a move away from finenv.UserValueInput in favor of FCCustomWindow. (But the latter is currently much more verbose.) Would it also be possible to dispense with the chain call entirely and reimplement it?
Something like:
local window = finale.FCCustomLuaWindow()
window:CreateStatic(10, 10, 'this is some text')

I'm not a big fan of chain calls, but maybe that's because I personally read vertical code more easily than horizontal code. I would probably end up writing them vertically anyway, like:
window:CreateStatic(10, 10)
   :SetText('this is some text')

Nick and I have been discussing the future of Lua-in-Finale and changes we would like to see in the PDK Framework. If, just as a random hypothetical example, someday the CreateStatic function added an optional text parameter, how would that affect the mixin? (We aren't actually proposing this change, though it might not be a terrible idea.)
A lot of whether lua even has a future in Finale depends on whether Jari chooses to release his source code for JW Lua. I would like to talk to you privately about that, if you are interested. Some of this may directly impact the mixin library. You can contact me through my website:
robertgpatterson.com

Methods can be implemented and over-ridden with whatever signature you want. The only technical limit is that in its current form only one method/property with the same name can be stored at a time. In other words, no more than 1 level of 'inheritance' (mixin + reference to original method via underscore).
There's no obligation to take utilise chaining if you prefer not to, this just provides the option. I personally only started to use chaining relatively recently and although I like it now, it did take some time to acclimatize so I understand where you're coming from.
To address your last question: if the third parameter was optional and the existing SetText method was still retained with the same signature, then it wouldn't be an issue. If the third parameter was required then that would be a breaking change and any mixins would have to be updated, although the same would be true for any code that uses CreateStatic, so there's nothing unique in that sense. The area that is most vulnerable to breaking changes would be method chaining. If a method that previously returned nothing was updated to return a value, then any chains where that method was used could break (depending on where in the chain the call is and if the final result is utilised). But as I wrote earlier, there's no requirement to use them and I don't know what the likelihood is that a return type would be changed in such a fashion.
Thankyou for your feedback. I sent you message on your site.

Well, rats my web server is having issues because of course it is.
You can just send me email directly: robert "at" (my domain name above).

Approved.
My main two reservations relate to the maintainability of the codebase as a whole.

With the mixins and fluid interface, there are now two ways of doing things: chaining and not chaining. This could potentially lead to different parts of the codebase using each of the different code styles. As the codebase grows, this could become more of an issue as new contributors now need to learn two different ways of developing JW Lua to contribute. Since these scripts often serve as a model for those learning JW Lua, I could see potential confusion with beginners trying to copy an example using chaining and it not working.
I can see things becoming complicated if mixins become used inconsistently. Because then an FCNote in one script may not have the same methods and properties as an FCNote in another script. This could make scripts become less predictable for developers/code reviewers—especially if they are used in the library.

In general, though, I'm game to merge these changes. I definitely think they could improve DX a lot, and the chaining is something common in many other languages that I've missed in JW Lua.
We'll just need to be careful with future PRs in case things start to get out of hand and become unmaintainable.
@rpatters1, feel free to merge once all your concerns are met.
P.S. @ThistleSifter, guessing you've coded professionally before? The code style, thoughtfulness, and high-level nature of this PR is really impressive for someone's first commit on GitHub.

I am attempting to execute the sample code and got the following error on mixin.register_default:
mixin.lua:137: attempt to index field '?' (a nil value)"

My code to this point:

local mixin = require("library.mixin")

mixin.register_default('FCCtrlStatic', 'SetText', function(this, str)
	if type(str) == 'string' then
		local temp = str
		str = finale.FCString():SetLuaString(temp) -- This works because of the fluid interface
	end

	-- Trailing underscore is used to refer to the original method
	this:CreateStatic_(str)

	-- By not returning a value (copying the behaviour of the original method), the fluid interface is maintained
end)

and line 137 is the middle of the following 5 lines
    for _, c in ipairs(class) do
        for p, v in pairs(prop) do
            if type(p) == 'string' and p:sub(-1) ~= '_' then default_mixins[c][p] = copy_table(v) end
        end
    end

@Nick-Mazuk
Funnily enough, I'm actually a classically trained trombone player, although I seem to play more jazz than anything else these days. But now I'm looking to move into the IT industry so I'm trying to getting out there more. I have done a fair amount of programming as a hobby but most of it is in a project with a private repo.
I think the solution lies in how the codebase is maintained and what policies you have in place.

Firstly, you need control over how mixins are defined and what methods are added and overridden.
I would add a mixins directory with two subdirectories, one for default mixins and one for named mixins.
For default mixins, perhaps one file per class?
If a plugin needs a mixin, it can require it. If a mixin needs another mixin, it can require it.
Default mixins should not be allowed to require a named mixin (think of it in terms of OOP: parents can't know about children).
All overridden methods in a default mixin should be 100% backwards compatible, since the consumer has no way of knowing whether a default mixin is applied or not (LSP).
Named mixins should only be allowed to be defined once, and not be overridden (open-closed). [Actually I haven't enforced this, and I should. I'll make some more changes, don't merge this yet.]
Plugins should only be allowed to use the default mixins defined in the default mixins directory. They should not be allowed to define their own. (if need, mixins can always be manually overridden on an individual object with the apply_table method)

This may limit some of the 'magic' that can be done (I don't like too much magic anyway) but it should keep things sane.
Since mixins are registered with function call, it should be easy to have a linter that checks for those function calls in PRs and whether they are allowed in that directory or not.
Another option is to have the mixin library applied by default (not individual mixins, just the library) which would level the playing field. If you were to do that, the library would essentially go from being a library to a framework and obviously there are a whole host of other things to think about if you do go in that direction.
I should mention that I haven't done any benchmarking with performance-intensive scripts, so I don't know what the performance implications would be for a script that has to perform tens-of-thousands of operations. It could be negligible but I don't know.
@rpatters1
That's what I get for making quick last-minute changes before uploading. Try it now, it should work.
I have also realised that I made a typo in the example I posted in the OP, which I have now fixed. So when you test it, use the updated example.

This all looks good now. I'm going to merge it. I do have a question, though. Will this work in LuaJIT? (Which is more or less Lua 5.1.) I think one of the possible futures for lua-in-Finale is transitioning from Lua 5.2 to LuaJIT.
Finally, a lot of the work for creating class-specific mixins could be automated by creating a new script based on the create_object_reflection.lua script that I created in my fork of Jari's test toolkit. That script creates refl-cpp macros for all classes (or a selected class). It would just be a matter of changing the boilerplate in the script.


Deploy state legend storybook

Description
Just some storybook stories I added for the demo.
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box

[ ] Attached issue to pull request
[x] Changelog entry
[x] Code is clear and sufficiently documented
[x] Sufficient test cases (reproduces the bug/tests the requested feature)
[x] Correct, in line with design
[ ] End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )

Reviewer Checklist:

[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Code is clear and sufficiently documented
[ ] Correct, in line with design

Processing this pull request

Merged into branches master, iso4 in 99a40226b4a511f2175bc9c00244523d21089ca6


Fix new object model used in EFT <IP_ADDRESS>06 / spt-aki 3.6.0

master:
Target EscapeFromTarkov (<IP_ADDRESS>06) in C:\Battlestate Games\sptarkov.
>> Resolved System to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\System.dll.
>> Resolved System.Core to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\System.Core.dll.
>> Resolved netstandard to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\netstandard.dll.
>> Resolved Assembly-CSharp to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\Assembly-CSharp.dll.
>> Resolved bsg.console.core to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\bsg.console.core.dll.
>> Resolved Comfort to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\Comfort.dll.
>> Resolved Comfort.Unity to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\Comfort.Unity.dll.
>> Resolved ItemComponent.Types to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\ItemComponent.Types.dll.
>> Resolved Newtonsoft.Json to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\Newtonsoft.Json.dll.
>> Resolved NLog to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\NLog.dll.
>> Resolved UnityEngine.AssetBundleModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.AssetBundleModule.dll.
>> Resolved UnityEngine.CoreModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.CoreModule.dll.
>> Resolved UnityEngine.IMGUIModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.IMGUIModule.dll.
>> Resolved UnityEngine.PhysicsModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.PhysicsModule.dll.
>> Resolved UnityEngine.TextCoreModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.TextCoreModule.dll.
>> Resolved UnityEngine.TextRenderingModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.TextRenderingModule.dll.
>> Resolved 0Harmony to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\0Harmony.dll.
>> Resolved UnityEngine.InputLegacyModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.InputLegacyModule.dll.
>> CS1061 [Features\Hits.cs]: 'GInterface82' does not contain a definition for 'IsYourPlayer' and no accessible
extension method 'IsYourPlayer' accepting a first argument of type 'GInterface82' could be found (are you missing a
using directive or an assembly reference?).
>> CS0266 [Features\GameState.cs]: Cannot implicitly convert type 'IAIDetails' to 'EFT.Player'. An explicit conversion
exists (are you missing a cast?).
>> CS1929 [Features\GameState.cs]: 'IAIDetails' does not contain a definition for 'IsAlive' and the best extension
method overload 'PlayerExtensions.IsAlive(Player?)' requires a receiver of type 'EFT.Player?'.
>> CS1503 [Features\GameState.cs]: Argument 1: cannot convert from 'IAIDetails' to 'EFT.Player'.
>> CS1929 [Features\WallShoot.cs]: 'GInterface82' does not contain a definition for 'IsValid' and the best extension
method overload 'GClass1118.IsValid(GStruct94)' requires a receiver of type 'GStruct94'.
>> CS1061 [Features\WallShoot.cs]: 'GInterface82' does not contain a definition for 'IsYourPlayer' and no accessible
extension method 'IsYourPlayer' accepting a first argument of type 'GInterface82' could be found (are you missing a
using directive or an assembly reference?).
>> Try #0 Compilation failed for master branch.

dev-<IP_ADDRESS>06:
>> Resolved System to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\System.dll.
>> Resolved System.Core to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\System.Core.dll.
>> Resolved netstandard to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\netstandard.dll.
>> Resolved Assembly-CSharp to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\Assembly-CSharp.dll.
>> Resolved bsg.console.core to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\bsg.console.core.dll.
>> Resolved Comfort to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\Comfort.dll.
>> Resolved Comfort.Unity to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\Comfort.Unity.dll.
>> Resolved ItemComponent.Types to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\ItemComponent.Types.dll.
>> Resolved Newtonsoft.Json to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\Newtonsoft.Json.dll.
>> Resolved NLog to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\NLog.dll.
>> Resolved UnityEngine.AssetBundleModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.AssetBundleModule.dll.
>> Resolved UnityEngine.CoreModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.CoreModule.dll.
>> Resolved UnityEngine.IMGUIModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.IMGUIModule.dll.
>> Resolved UnityEngine.PhysicsModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.PhysicsModule.dll.
>> Resolved UnityEngine.TextCoreModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.TextCoreModule.dll.
>> Resolved UnityEngine.TextRenderingModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.TextRenderingModule.dll.
>> Resolved 0Harmony to C:\Battlestate Games\sptarkov\EscapeFromTarkov_Data\Managed\0Harmony.dll.
>> Resolved UnityEngine.InputLegacyModule to C:\Battlestate
Games\sptarkov\EscapeFromTarkov_Data\Managed\UnityEngine.InputLegacyModule.dll.
>> Try #1 Compilation succeed for dev-<IP_ADDRESS>06 branch.

Only issue I found is the unlimited ammo doesn't work anymore. No errors in the console. Health, Hit markers, Wallhack, Wallshoot, ESP, Aimbot, Thermal all seem to work correctly.

I think I just fixed the ammunation

Yep ammunition works again.


Small reset subset

Maybe we should add options reset: 'small', which will insert most important but not all rules.
Like rules, that can be inherit from parents. For example, animation can’t be inherit, so we can remove it.

@ai Good idea.
We can create some properties subsets:

small;
sizes;
full;
uninherited;

Yeap, maybe inherited is a better name than small

@ai  What subset should plugin use by default? all or inherited?

Seems like all, because it is how spec works :(

@ai implemented in feature/subsets
I have idea to add some other subsets such as

sizes (width, height, sizings, borders, margins)
texts styling
What do you think bout it?

Yeap, but we need different CSS API for text. Maybe it should be in postcss-autoreset?

Looks fine. postcss-autoreset will reset rules by different sets of rules.

all: unset   or
sizes or
texts or
some universal set

@ai

Nope, we need inherited options for unset, because it is looks like non-100% but better polyfills.

We have reset option.
https://github.com/maximkoretskiy/postcss-all-unset#reset
Should  I rename it to unset?

Nope, your name is much better, I just miss a commit.


Problem converting RGB to RGBA RGBImage

Hi,
I have a weird problem. I got a SharedImage, which may be RGB or RGBA. What I'm trying to do is to squeeze it into an arboard Clipboard structure called ImageData, which takes raw bytes and the width and height of the image. They expect RGBA at all times.
So what I'm doing is to first convert to an RgbImage, then get the bytes with to_rgb_data(). This works great for RGBA images, but RGB obviously needs the alpha component added, which I do with convert:
                                        match img.depth() {
                                            fltk::enums::ColorDepth::Rgba8 => {
                                                let rgba_image = img.to_rgb();
                                                match rgba_image {
                                                    Ok(rgba_img) => {
                                                        let rgb_data = rgba_img.to_rgb_data();
                                                        let img_data: ImageData = ImageData {
                                                            bytes: rgb_data.into(),
                                                            width: img.data_w() as usize,
                                                            height: img.data_h() as usize,
                                                        };
                                                        let _ = clipboard.set_image(img_data);
                                                        println!("Image copied to clipboard");
                                                    },
                                                    Err(err) => {
                                                        println!("Failed to convert image to RGB: {}", err);
                                                    }
                                                }
                                            },
                                            fltk::enums::ColorDepth::Rgb8 => {
                                                let rgb_image = img.to_rgb();
                                                match rgb_image {
                                                    Ok(rgb_img) => {
                                                        let mut rgb_data = rgb_img.to_rgb_data();
                                                        println!("rgb image size: {}", rgb_data.len());
                                                        for i in (0..rgb_data.len()).step_by(3) {
                                                            rgb_data.insert(i+2, 255); // Add alpha channel
                                                        }
                                                        let rgba_image = rgb_img.convert(fltk::enums::ColorDepth::Rgba8);
                                                        match rgba_image {
                                                            Ok(rgba_img) => {
                                                                let rgba_data = rgba_img.to_rgb_data();
                                                                println!("rgba image size: {}", rgba_data.len());
                                                                let img_data: ImageData = ImageData {
                                                                    bytes: rgba_data.into(),
                                                                    width: img.data_w() as usize,
                                                                    height: img.data_h() as usize,
                                                                };
                                                                let _ = clipboard.set_image(img_data);
                                                                println!("Image copied to clipboard");
                                                            },
                                                            Err(err) => {
                                                                println!("Failed to convert image to RGBA: {}", err);
                                                            }
                                                        }

                                                    }
                                                    Err(err) => {
                                                        println!("Failed to convert image to RGB: {}", err);
                                                    }
                                                }
                                            },
                                            _ => {
                                                println!("Unsupported color depth");
                                            }
                                        }

However, convert fails in image.rs line 1008 at the assert:
                    4 => {
                        for (_, pixel) in data.chunks_exact(3).enumerate() {
                            temp.push(pixel[0]);
                            temp.push(pixel[1]);
                            temp.push(pixel[2]);
                            temp.push(255);
                        }
                        assert!(temp.len() as i32 == w * h * 4);
                        RgbImage::new(&temp, w, h, ColorDepth::Rgba8)
                    }

Am I doing something wrong? Is there a specific way I should get the RgbImage out of the SharedImage?

Hi
This was probably a bug in the convert method.
Can you try modifying your Cargo.toml:
[patch.crates-io]
fltk = { git = "https://github.com/fltk-rs/fltk-rs" }

Hah, I ran into the very same issue myself :)
That works perfectly!


Changelog and versioning

User story
As a developer using Head Start for my project,
I want a clear list of changes when there's a newer version of Head Start available,
so that I know if it's worth (new features vs breaking changes) updating my project to a newer version.
System design

[ ] Introduce versioning.
[ ] Use semantic versioning (major, minor, patch) to indicate the effect of a new version.
[ ] Use Changesets workflow to track and publish changes to a CHANGELOG.md file.
[ ] Generate patch files for diff between versions and add those to the source code, so projects using Head Start have a way to upgrade (also see #71 ).

Since Head Start is a starterkit template rather than a package, semver might not be most suitable. As basically every change is an API change. Maybe we can still use Changesets, but with a custom changelog format so our CHANGELOG.md could look something like this:
# Head Start Changelog

## 2024-01-31 <!-- date of merge to main, rather than semver -->

* [#30](https://github.com/voorhoede/head-start/pull/30) adds new Table Block, see its readme for details.
* [#127](https://github.com/voorhoede/head-start/pull/127) fix routing in Preview Mode, ...

## 2024-01-16

* ...

The changelog format as proposed in the previous comment basically already exists, as it matches the commits of the PRs merged to main:

It has the added bonus that you can filter by date range.
So instead, documenting how to make a patch as proposed in the original issue description could suffice.

Another alternative is using git cherry-picking desired changes one by one or git cherry-picking a whole range of commits. Where the Head Start repository can be added as a secondary remote (git origin add head-start ...).


chore(main): release 1.2.0

:robot: I have created a release beep boop
1.2.0 (2024-10-14)
Features

add docker cli to image (4b27653)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v1.2.0
:sunflower:


Header has collapsed with upgrade to 6.7.4

I have a project that has 3 tables in it, and when I upgraded to 6.7.4 the headers all collapsed down to a couple of pixels in height.
Reverting to 5.6.0 fixed the problem but leaves me running an older version.
Any ideas please?
Regards,
Steve Bond

No-one else has reported such a problem. I've upgraded to 6.7.4 and it worked perfectly fine.

from 5 to 6 is a breaking change (semver standards) so a lot may have changed
Which browser is this happening on? It may be related to some of the issues reported in the github Wiki FAQ if it is IE.
Are you overriding any components?
can you provide a codesandbox.io demonstrating the behaviour ?

Closing unless this can be reproduced on 6.7.4.

Hi Gary,
Sorry I'm under pressure from production deadlines right now. All I can tell you is that I reverted to the previous version and the headers came back.
Regards,
Steve

From: Gary Menzel<EMAIL_ADDRESS>Sent: Sunday, 5 November 2017 11:56 PM
To: react-tools/react-table
Cc: Steve Bond; Author
Subject: Re: [react-tools/react-table] Header has collapsed with upgrade to 6.7.4 (#597)
Closed #597https://github.com/react-tools/react-table/issues/597.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/react-tools/react-table/issues/597#event-1326463469, or mute the threadhttps://github.com/notifications/unsubscribe-auth/APhwv0FtfVSm7c9a7woWNKBxUqkTpegGks5szbCNgaJpZM4QQgkk.

That's OK - @tannerlinsley is pretty strict with semver. I was not a user of the package prior to version 6 so I am not really aware of what techniques were being used back then. I suspect, with the major version change, that the architecture may have changed completely.
Probably best to stick with the version that is working until you have time to look at 6.7.* (probably best to fire up a separate spike to give it a run through - codesandbox.io is a great tool for doing that if you don't want to scaffold up another project - you could even start with a fork of one of the samples from the react-table,js.org site).


Updated CHANGELOG for release v1.8.0

Issue #, if available:
Description of changes:
Updating the changelog for v1.8.0
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Also seems 1 test suite is failing - probably something transient with GH runner


Display for orgs on View Organization

Overview
The background image cuts off prematurely when an individual organization is clicked on to display under Index Contributors in large view size.
Action Items
Find which component is causing the visual effect. Search the site to see if this occurrence repeats.
Resources/Instructions
It can be seen here:
http://civictechindex.org/organization/code-for-buffalo
The background image cuts off abruptly and the plain teal color takes over.

PR #1114


Special characters aren't being sent correctly with sendKeys()

Special characters arent being sent right with sendKeys(), for example, when trying to send "@", value "2" is sent instead.
To make it work for now Im using the following:
/
actions.keyDown(Keys.SHIFT).sendKeys("2").keyUp(Keys.SHIFT).build().perform();

@jonathangiber Thanks for reporting. I have added some UI tests but cannot reproduce what you say. See https://github.com/FlaUI/FlaUI.WebDriver/pull/79

This could be related to the fact I was using java class Actions since before the latest flaUI version, I couldn't properly find elements in the desktop. Will use the driver only now, thanks.


Abilita database YAML

Brilliant

Enabling the workflow should be done in the forked repo, as explained in the Microsoft Learn module, as this repo is mainly used as a template to provide a kickstart to developers


First pass at a control loop

This is very rough, but it works for simple examples.
See README.md for usage, and TODO.md for what's next.
Sample usage:
mkdir -p `pwd`/workspace
docker build -t control-loop .

docker run \
  -e OPENAI_API_KEY=$OPENAI_API_KEY \
  -v `pwd`/workspace:/workspace control-loop python /app/main.py /workspace \
  "write a bash script that prints 'hello world'"

Wow @rbren , this is great!
Could you elaborate a little bit on how you're expecting this to interface with the frontend?
For instance, the user enters a chat request into the frontend, end then what happens?

Thanks!
Here's what I think the user flow should be:

User loads a repo, or starts the app in the dir they want to work in
We start a docker container with that directory mounted
User types in a prompt into the chat window
Control loop kicks off
At each turn of the control loop:

We send a message back to the web client (e.g. via websocket, or the client polls the backend)
For edit/read actions, put a chat message that says "editing $FILE..." or "reading $FILE...", and show the file being read/edited in the file pane
for browse actions, put a chat message that says "browsing $URL..."
for think actions, put the thought into the chat directly
for run actions, put a chat message that says "running $COMMAND", and show the command being run
for finish actions, put a friendly "Done" message

At any point, as the agent is working, the user should be able to type in a message to give it a hint or redirect it. That message will be added to short-term memory

nice work. i'm gonna impl a multi-llm interface for langchain

I've added a couple simple test cases in ./agent/regression/cases, so you can see how it performs for some basic tasks.

FWIW--I fully expect (and hope!) for this code to get deleted and replaced with something better. But getting this merged would at least give the frontend and backend folks something to code against.

@rbren Thank you for your contribution! I will review the code, please give me some time.


RTL support

hello
is ng2-admin support RTL  direction???

@mmdsharifi not at the moment unfortunately, let's keep this discussion here https://github.com/akveo/ng2-admin/issues/404


Timezone thingy

Unknown error: SIG_BAD_CLOCK / bad signature: your computer's clock is wrong: signature is dated 86390 seconds in the future - I just moved, how do i fix?

I'm having the same issue. Any idea what I should do?


Fix Badge style proptype

Fixes warning:

Codecov Report

Merging #321 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #321   +/-   ##
=======================================
  Coverage   76.44%   76.44%
=======================================
  Files          19       19
  Lines         777      777
  Branches      115      115
=======================================
  Hits          594      594
  Misses        151      151
  Partials       32       32


[angularx-qrcode] Error generating QR Code: NotYetImplemented

Show this error on webstorm console when compile Angular 17, not in browser

Hi @mriveaux
this log does not originate from angularx-qrcode, neither from it's dependencies. You might verify this byu searching the source.
Hope that helps!


Dependencies update

Updated dependencies:

Bootstrap: v4.0.0-beta => v4.5.0
Chartjs:	v2.7.0 => Removed
jquery: v1.12.4 => v3.5.1
jquery-migrate: v1.4.1 => v3.3.0
jquery-ui: v1.12.1 => v1.12.1
jquery smartmenus: v1.0.0 => v.1.1.0
parallax: v1.4.2 => v.1.5.0
jquery datetimepicker: v1.3.3 => v2.5.20
datatables: v1.10.16 => v1.10.21
popper: v1.12.4 => v1.16.1 (LTS)

Fixed functionality that broke due to dependency updates.

Please elaborate on "functionality"

I guess "functionality" isn't the exact right term here, but I basically had to add a new css rule for the navigation header dropdown, since they would otherwise not work anymore. The datatable styling also changed a little, so I had to change the rules there.
Everything else worked as expected in my local testing.

We should not be rolling updates unless there is a very compelling reason to. We don't have any testing in place to ensure that nothing breaks.


feat: update deps, renaming, small improvements (#30)

This pull request updates the dependencies and applies a breaking change to the mock handler naming. Beside it contains and prepares a few usability improvements. E.g. improving stack trace information.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

18 of 18 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
936

Relevant Lines:
936

💛  - Coveralls


mat-paginator pageSize property

For mat-paginator,
I would like to save and restore pageSize into localStorage. First, on my mind I I created a directive. It works partially :) I can save pageSize. But How to read it?
`import { Directive, ElementRef, OnDestroy, HostListener, HostBinding } from

'@angular/core';
import { UserClientOptionsService } from 'app/user-client-options.service';

@Directive({
  selector: '[itemsPerPage]'
})
export class ItemsPerPageDirective implements OnDestroy {

  constructor(private element: ElementRef, private optionsService: UserClientOptionsService) {
  }

  // it doesn't work. No property pageSize exists
  //@HostBinding('pageSize')
  //pageSize: number;

  @HostListener('page', ['$event'])
  onChange(e) {
    this.optionsService.update(x => x.itemsPerPage = e.pageSize);
  }

  ngOnDestroy() {
  }
}`

Closing since this is a question rather than issue or feature request. Feel free to ask your question on StackOverflow to see if you can get a response there


vscode insiders: ctrl+click on declaration doesnt show references anymore

It works in Version: 1.71.0
Commit: 784b0177c56c607789f9638da7b6bf3230d47a8c
Datum: 2022-09-01T07:22:41.992Z
Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0

ctrl+left mouse click on a declaration moves the cursor to the reference if only one exists:

https://user-images.githubusercontent.com/49640488/188890009-d7b59c62-0bd9-4a24-8dc2-4511baff1f7b.mp4

ctrl+left mouse click on a declaration moves the cursor opens the reference menue if only multiple references exist:

https://user-images.githubusercontent.com/49640488/188890027-1a7521fb-32a2-419e-9ad9-39a50dc1f3a6.mp4
It doesnt work in Version: 1.72.0-insider
Commit: 0f2de31e4856886cdbf32f85488bc40f480fb38f
Datum: 2022-09-07T05:15:40.689Z
Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
(Also doesnt work on the Desktop Electron App.)
https://user-images.githubusercontent.com/49640488/188890053-08806a38-fd85-4224-946b-ac7751722d81.mp4
To reproduce:
install the versions I listed above or use https://vscode.dev/ and https://insiders.vscode.dev/ you may use this example code 😉😄  :
const thingsILike = ["linux", "vscodium", "freeSoftware"]
const sayNiceThings = (thing: string) => {
    console.log("Thanks for making "+ thing + ", I really like it! :)")
}
thingsILike.forEach((thing)=>sayNiceThings(thing))
thingsILike.forEach((thing)=>sayNiceThings(thing))
thingsILike.forEach((thing)=>sayNiceThings(thing))

Maybe it has something to do with this: https://github.com/microsoft/vscode/issues/155800#issuecomment-1191443830

@jrieken Its the default:
"editor.gotoLocation.alternativeDefinitionCommand": "editor.action.goToReferences"

I used https://insiders.vscode.dev/ without any account. So no custom settings or extensions. :)
If I use another setting like
"editor.gotoLocation.alternativeDefinitionCommand": "editor.action.referenceSearch.trigger"
it also doesnt work.

Does "Peek References" or "Go to References" work when invoked on that symbol?
btw - this works for me using Safari or FF

yes
https://user-images.githubusercontent.com/49640488/188911933-ed302539-43f3-4f84-a8df-978a9a83b3ca.mp4

are you using https://insiders.vscode.dev/ with your account, or in a privat window? It also doesnt work for me in other chromium based browsers, like brave nightly.

The bug is also happening if I choose english as a language and or keyboard layout.

The same thing is happening to me, I'm on insiders
Version: 1.72.0-insider
Commit: 0f2de31e4856886cdbf32f85488bc40f480fb38f
Date: 2022-09-07T05:18:06.866Z (1 day ago)
Electron: 19.0.12
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 21.6.0
Sandboxed: Yes

The same thing is happening to me, I'm on insiders
Version: 1.72.0-insider Commit: 0f2de31 Date: 2022-09-07T05:18:06.866Z (1 day ago) Electron: 19.0.12 Chromium: 102.0.5005.167 Node.js: 16.14.2 V8: <IP_ADDRESS>-electron.0 OS: Darwin arm64 21.6.0 Sandboxed: Yes

Same here

Same here. This is no longer working with the latest VSCode Insider version. For me it's not working with Dart code. If the usage is in the same file and there is only one, it will not jump there either.

I managed to reproduce with the steps in #160785


How can I see web at 80 port in production?

Hi
in production, http://localhost:1337 is from gunicorn
but how can I know where is nginx work?
it's not work at 80 port in my computer
thanks

Can you try to rephrase your question. I'm not understanding it.

Sorry I misunderstood it.
I didn't really understand Nginx and docker-compose.prod,tml.
So I thought Nginx only work on 80 port, so is Nginx on docker,
and maybe 1337:80  mean gunicorn 1337 port to Nginx on docker outside 80 port.
Now I know 1337:80 means Nginx inside docker 80 port to dokcer outside 1337port.
And I want to ask other questions, about  I want to deploy the project on GCP linux VM

which is better deploy way?

Use git to download the project, and run docker-compose -f docker-compose.prod.yml up -d --build
or
upload web, nginx, db image to docker hub, then docker pull on the VM, then run

When I use Flask url_for(), the URL always miss port 1337 on host:1337，so I add :1337 on nginx.conf, become proxy_set_header Host $host:1337;
Does there have more graceful way to add the port 1337?

When I develop the project, should I use env and server run by manage run or use docker-compose up -d --build to run the project?
I not sure docker project is deploy on docker or after developing is already on docker.

Thank your response and your tutorial is awesome
Let me have first own docker project : )

These questions are more appropriate for StackOverflow. GitHub issues are not meant for support like this. Closing this issue.


no file explorer [BUG]

Select your platform
Windows
Describe your issue
when i use gd from steam, when it says "select file" it doesnt open the file explorer, and i cant select my json file. [BUG]
Steps to reproduce the bug

click select file in the gd editor
doesnt open to select file

Extra fields

[X] I updated Geode to latest version.
[X] I updated Geode Launcher (Android) to latest version.

Are you sure? Sometimes explorer can just open in background below geometry dash. Because it just works for me.

Are you sure? Sometimes explorer can just open in background below geometry dash. Because it just works for me.

no, it does not open behind. but no problem it must be my computer. btw nice mod :D

Ok, then I close the issue


Error while adding multiple veth in a container in case of multiple ip assignment to a pod

When pod requests for ips from multiple plugin, then genie should assign multiple veths to the container. However, genie throws error as "container veth name provided (eth0) already exists".

The issue has been addressed in PR #108


debug not function properly using integrated terminal

I use mingw64 shell in vscode to run debug task, some wired problem happens where debugging only works on first terminal start both in C++ and python.
terminal output:
bash: cut: command not found

Bury@DESKTOP-18IUEN2 MINGW64 /e/wxproj
$ c:\\Users\\Bury\\.vscode\\extensions\\ms-vscode.cpptools-0.25.0\\debugAdapters\\bin\\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-csofrkex.quv --st
dout=Microsoft-MIEngine-Out-bytjzojs.ald --stderr=Microsoft-MIEngine-Error-s1pqxgyk.ssn --pid=Microsoft-MIEngine-Pid-ohg01kgc.zmz --dbgExe=C:/msys64/mingw64/bi
n/gdb.exe --interpreter=mi
wtf
press any key to continue. . .
Bury@DESKTOP-18IUEN2 MINGW64 /e/wxproj
$
nv c:\\Users\\Bury\\.vscode\\extensions\\ms-vscode.cpptools-0.25.0\\debugAdapters\\bin\\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-1ia2lu5o.akw -
-stdout=Microsoft-MIEngine-Out-urd43e5o.bof --stderr=Microsoft-MIEngine-Error-w0mslvsa.jy0 --pid=Microsoft-MIEngine-Pid-50fjbiw0.oo5 --dbgExe=C:/msys64/mingw64
/bin/gdb.exe --interpreter=mi

bash: nv: command not found

Bury@DESKTOP-18IUEN2 MINGW64 /e/wxproj
$ env c:\\Users\\Bury\\.vscode\\extensions\\ms-vscode.cpptools-0.25.0\\debugAdapters\\bin\\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-gycqlihu.add
--stdout=Microsoft-MIEngine-Out-l2gfhnze.z32 --stderr=Microsoft-MIEngine-Error-mkgomjmk.va3 --pid=Microsoft-MIEngine-Pid-1kz3wvlg.to0 --dbgExe=C:/msys64/mingw6
4/bin/gdb.exe --interpreter=mi
bash: env: command not found

It looks like some command lines are missing after first debug.
In python the problem was fixed after I added  eval "$('/C/Users/Bury/Anaconda3/Scripts/conda.exe' 'shell.bash' 'hook')" to the .bashrc file.
But I have no idea how this work. Can anyone tell me why? Thanks in advance for any help!

Problem solved. The issue was  that I use system("pause")
So it turns out that if you stop debugging at system("pause") without pressing any key, somehow the integrated terminal would continue to listen for any key input which results in the missing first character of next command line. Is it a bug?
This problem will never exist in a external consle, because stop debugging will entirely shutdown the terminal.
Not sure why it also happend in python, can't recreate the problem in python anymore.


Ensure stale cluster deployment metrics are not reported

HIVE-2313

/assign @2uasimojo
/cc @suhanime


feat: optionally pass type to column

Closes #78.
Summary of Changes
For the sake of consistency it is now possible to pass the type of a Column in the constructor. This also improves performance, for example when we call get_column on a Table. In that case we already know the type of the column anyway, so there's no reason to infer it again.

🦙 MegaLinter status: ❌ ERROR

Descriptor
Linter
Files
Fixed
Errors
Elapsed time

✅ PYTHON
black
2
2
0
1.24s

✅ PYTHON
flake8
2

0
0.46s

✅ PYTHON
isort
2
2
0
0.23s

✅ PYTHON
mypy
2

0
1.81s

❌ PYTHON
pylint
2

1
2.73s

✅ REPOSITORY
git_diff
yes

no
0.03s

See detailed report in MegaLinter reports
Set VALIDATE_ALL_CODEBASE: true in mega-linter.yml to validate all sources, not only the diff
MegaLinter is graciously provided by

:tada: This PR is included in version 0.4.0 :tada:
The release is available on:

v0.4.0
GitHub release

Your semantic-release bot :package::rocket:


Greenkeeper/serverless offline 3.28.1

Coverage remained the same at 100.0% when pulling 8859cb5bdde62bb84c0700ddacfee3fb5eb616f6 on greenkeeper/serverless-offline-3.28.1 into 02dc3594ade49f2c5e6c7c2bd8c137b76c5c5592 on master.


Remoted Certificate Template v3 Note from PKI requirements

Fixes #549 .

@ChrisKibble : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Looks like something is already there:

For information about using Cryptography API: Next Generation (CNG) certificates with Configuration Manager, see CNG certificates overview.

#sign-off
Thanks @ChrisKibble


Check version gives following error

Reference error: fetch is not defined
I am trying to raise a PR to fix this but not able to push the changes

Are you using the Node.js version specified in https://github.com/GoogleChromeLabs/chrome-for-testing/blob/main/.nvmrc?


[integration] publish page content is broken

All attribute "s are being output as ' which means any values that have a ' in them break the html.
Can anyone confirm this?

<!DOCTYPE html>
<html lang='en'>
	<head>
		<meta charset='UTF-8'>
		<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
		<meta name='viewport' content='width=device-width, initial-scale=1'>

Oh dear...

Thanks guys


[FEATURE] Add PostgreSQL as backend database for kyuubi metadata

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Search before asking

[X] I have searched in the issues and found no similar issues.

Describe the feature
Add PostgreSQL as Kyuubi's metadata storage database
Motivation
Currently, Kyuubi supports the use of SQLite and MySQL to store metadata. Although PostgreSQL can be supported through the 'CUSTOM' method, there is a certain usage cost for users. PostgreSQL ，as one of the most widely used databases,  if it can be used out of the box, will further lower the user's usage threshold
Describe the solution
No response
Additional context
No response
Are you willing to submit PR?

[X] Yes. I would be willing to submit a PR with guidance from the Kyuubi community to improve.
[ ] No. I cannot submit a PR at this time.

@lukeyan2023 Great, looking forward your contribution～

@pan3793 Hi! I've implemented this feature and opened PR #6027. Could you take a look, please?

@tigrulya-exe thanks, I'm looking


node-gyp error - npm install

I'm submitting a ...  (check one with "x")
[X ] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, instead see use [gitter](https://gitter.im/mgechev/angular2-seed) or [stackoverflow](https://stackoverflow.com/questions/tagged/angular2)

Current behavior
Got the latest angular seed and started npm install.. getting follow error
C:\Users\ssk3\Documents\GitHub\oar-sdp\node_modules\weak>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\....\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
MSBUILD : error MSB4132: The tools version "2.0" is unrecognized.  System Windows_NT 10.0.10586
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\ssk3\Documents\GitHub\oar-sdp\node_modules\weak
gyp ERR! node -v v6.11.2
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok

Expected behavior

npm install should work fine without any errors
Minimal reproduction of the problem with instructions
Get the latest angular seed and run npm install

What is the motivation / use case for changing the behavior?

Upgrade to Angular 4.3
Please tell us about your environment:

Windows 10, WebStorm

Angular Seed Version: aaaaf75

Node: node --version = 6.1

npm i utf-8-validate --msvs_version=2015 fixed the problem


fix(release): correct ubuntu:xenial install

Description
Fix capnproto action.
Validated in test action
Closes TURBO-1310

Nothing in CI is testing this, going to merge it to unblock release.


Fix internship page on mobile view and improve internship cards

Description
Internship page needs a quick fix because a part of the footer section in the mobile UI is causing things to overflow. I also want to improve the internship cards by adding a transition to smoothen things out once a user hovers out of the card.
In addition to further improvements in the internship card, what do you think about clamping the about section to 5-6 lines?
Screenshots

Footer section in the mobile ui

Idea of clamping the about section, it should be similar to this but around 5 lines

Go for it @chaaals .


upgrade to dotnet 7

Feature request type
Enhance component
Component name
No response
Is your feature request related to a problem?
I need to upgrade my Maui Blazor app to dotnet 7 and I'm using MudBlazor too, but Mud does not support 7 via the current NuGet package and seems to need an upgrade.
Describe the solution you'd like
A new NuGet package that supports dotnet 7 SDK
Have you seen this feature anywhere else?
No.
Describe alternatives you've considered
It does not have any alternative, I must come up with dotnet 6.
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

[X] I agree to follow this project's Code of Conduct

It was the same with net6. Mud didnt have net6 package until net6 officially released. But Mud was also the first library that release its net6 compatible package - released at the same day.


Support for Sphere/SO(3)/SE(3)

Hi, is there support for these manifolds?

Also, is there anything manopt can do that mctorch cannot do? I've been using pymanopt to optimize over Sphere(4) but it's very slow (CPU) and doesn't easily support batched computations, so I am wondering if mctorch can be an almost-drop-in replacement for pymanopt

Hello Richard,
Thanks for the interest in McTorch.
We can handle Sphere and SO (assuming you are looking for the orthogonal group). The manifold to use is Stiefel. Say St(n,p) stands n-by-p matrices. Then, for sphere p = 1 and orthogonal group p = n.
We currently do not have support for SE3.
In general, it should be quite easy to port manifold definitions from Pymanopt to McTorch.
The motivations for Manopt and McTorch are different. McTorch is mostly for deep learning applications, whereas Manopt or Pymanopt has wider applicability.
Regards,

Wonderful! How hard would it be to implement the product manifold?
Also, in my case, I am learning a neural network cost function C(s,"a") where "a" is my decision variable, and then optimizing over a manifold for "a". In my situation McTorch would be better suited because of its GPU support right?

By a product manifold, if you mean, say, two weight matrices on different manifolds, then it is directly possible. For example, if the weight matrices are W1, W2, W3, ..., then McTorch allows W1 \in M1, W2 \in M2, W3 \in M3, .... So, the product structure flows through naturally.
For your other question, McTorch should be better as it exploits GPUs.
Let us know your experience.

Hi Bamdev,
Great to hear.
What's the best way to initialize 10 vectors where each one is in Sphere(4) manifold?

stiefel(4,1,10).


What do we need to do for Classic Application Insights retirement ?

I found the following message in the Application Insights page of our Company Communicator's Web app:
"Classic Application Insights is deprecated and will be retired in February 2024"

What do we need to do for this ?

Hi @ATshirai,
This is announcement from Microsoft to retire classic App insights in 2024 which is 2 years from now, this is not related to CC app in specific, depending upon the new releases of App insights, CC will be updated in future releases as well. No action item from your side on the same.

Closing this issue as there is no action item on this, please open a new issue in case of any other queries.


E419: FG color unknown

Getting this error on vim 8.2
line 555:
E419: FG color unknown

Closed in fd2582a


Rebase on openshift/origin

And other bumps

/retest

Failures so far look a lot like infrastructure issues
/retest

-_-
/retest

/lgtm
/approve

/retest

Suite run returned error: suite "openshift/openstack" does not contain any tests

/lgtm cancel

/hold

/reopen
/remove-lifecycle rotten

/unassign EmilienM

/close
I re-used and pre-existent branch by mistake

Please refer to https://github.com/openshift/openstack-test/pull/189


[Question] How to Respect Visibility Modifiers of Navigation Parameters?

I'm trying to pass an internal parceable enumeration as a safe argument.
This results in the following error because the generated directions are publicly exposed.
'public' function exposes its 'internal' parameter type FooType
Is there a way to restrict the visibility of generated classes to internal or a workaround for this? I don't want to expose internal types while using the navigation component.
Thank you!

@masterwok I have the same problem. I asked this question on stack overflow. Here you are in case you haven't resolved it yet.
https://stackoverflow.com/questions/71008801/can-i-change-the-access-modifier-of-generated-safe-nav-args

@masterwok
The problem got resolved in version
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.0"

and by applying the plugin
apply plugin: "androidx.navigation.safeargs"

instead of
apply plugin: "androidx.navigation.safeargs.kotlin"

You rock! Thanks @noureldeen-abouelkassem !

@masterwok It's my pleasure ♥

Looks like with suggested solution the generated classes will be on Java, that is not ideal approach as introduce breaking changes

@yakovliev-hover
As far as I know, this is not doable since the access level of the types passed through the Kotlin safe nav args plugin should be at least public.
You can consider using bundle instead of safe args if you need a totally Kotlin solution.


Add list-ops exercise

There's a bit of a problem that I'm not sure how to solve: when running guile seems to create a 92M log file due to pretty printing 1.000.000 number lists. These lists are kind of central to the exercise as they make the performance difference between a smart and a dumb implementation of the functions visible.

@pminten the logging behavior is defined in srfi-64/testing.scm, specifically at line 201:
;; Not part of the specification.  FIXME
;; Controls whether a log file is generated.
(define test-log-to-file #t)

I haven't gotten around to testing it yet, but we could try making (define test-log-to-file #f) part of the standard test header after the use-modules expressions; generating the log file is unusual behavior re other exercism tracks, so I'd be happy to default to living without it.
I'll try seeing if that works in one of my working exercises and update if it looks like a good fix.

OK, should have known it wouldn't be that simple. I'll continue working on a solution to suppress log file output, since it's not something that was really a goal in the first place.

@pminten I just opened #14 adding the following to  all extant tests:
;; Suppress log file output. To write logs, comment out the following line:
(module-define! (resolve-module '(srfi srfi-64)) 'test-log-to-file #f)

It effectively suppresses log output and should take care of your issue, if you'd like to try and maybe add that to the test header in your PR if it works?

@canweriotnow Thanks, this works. There's still the problem that if the user wants to look at the output of one of the huge list tests the whole million numbers get printed, but that's something with the scheme printer that apparently can't be helped.
I've updated this PR to use the module-define now.

@pminten Yeah, SRFI-64 doesn't specify anything about the printer, so you'd prolly have to write some specialized versions of the test assert macros to get around that... but for now, I think it's a good compromise. Plus, that logging behavior is not typical of unit test suites in other exercism tracks, so just losing it isn't much of a loss to my mind.
@kytrinyx - recommend merging now that log issue is resolved, assuming everything else is as expected.

@canweriotnow I thought I had added you to the team for this repository... and I had, but I had forgotten to add the repository to the team. o_O Anyway: You're good to merge now.
Thanks!

@kytrinyx Oh, cool! I'll merge it in. Thanks!


typeid broken across shared boundary makes a271c36b5ead4686b72d972b193bf1f534a92ffd not work

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Custom shared object linking to
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Linux Ubuntu 16.04)
TensorFlow installed from (source or binary): source
TensorFlow version (use command below): a271c36b5ead4686b72d972b193bf1f534a92ffd
Python version: 3.5
Bazel version (if compiling from source): 0.5.4
GCC/Compiler version (if compiling from source): 5.4
CUDA/cuDNN version: 9.0/7.0.5
GPU model and memory: P4000 (8 GB)
Exact command to reproduce: This is a little involved.

Describe the problem
@mrry First of all, thanks for quickly responding to my issue #16682, and for following up with the fixes in a271c36b5ead4686b72d972b193bf1f534a92ffd without my even mentioning the problem to you. Very impressive.
I know that in that commit, you mention "A subsequent change will move tf.contrib.data kernel implementations to a custom op library." When you say custom op library, I assume you mean a  distinct shared object file.
Unfortunately, unless you use --config=monolithic to build, this will not work because the typeid of DatasetVariantWrapper will be different between libtensorflow_framework.so and the custom op library shared object, because they are loaded with RTLD_LOCAL. --config=monolithic avoids the problem because _python_framework_internal.so is loaded with RTLD_GLOBAL in that case. This will override the custom op library's "weak" (I am talking about weak linkage of symbols here) typeid of DatasetVariantWrapper. Otherwise, variant::get<DatasetVariantWrapper>() will fail in dataset.cc's GetDatasetFromVariantTensor, because the two typeids that get compared have two separate pointers.
I first found this problem documented here. This stack overflow answer was also helpful.
I'm not sure what the right solution is to this yet. It seems it may be possible to change from pointer equality for type info to checking the equality of mangled strings with strcmp, based on my reading of libstdc++'s typeinfo header file.
Happy to answer any questions,s ince this is rather involved.
Source code / logs
2018-02-10 13:53:14.169478: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-02-10 13:53:14.422106: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Found device 0 with properties:
name: Quadro P4000 major: 6 minor: 1 memoryClockRate(GHz): 1.48
pciBusID: 0000:02:00.0
totalMemory: 7.91GiB freeMemory: 6.98GiB
2018-02-10 13:53:14.422134: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1405] Adding visible gpu devices: 0
2018-02-10 13:54:11.579203: I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-02-10 13:54:11.579230: I tensorflow/core/common_runtime/gpu/gpu_device.cc:912]      0
2018-02-10 13:54:11.579254: I tensorflow/core/common_runtime/gpu/gpu_device.cc:925] 0:   N
2018-02-10 13:54:11.579420: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1016] Creating TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6740 MB memory) -> physical GPU (device: 0, name: Quadro P4000, pci bus id: 0000:02:00.0, compute capability: 6.1)
2018-02-10 13:54:11.619971: W tensorflow/core/framework/op_kernel.cc:1273] OP_REQUIRES failed at iterator_ops.cc:827 : Invalid argument: Tensor must be a Dataset object.

Thanks for reporting this. There is a forthcoming change (submitted internally, but not yet merged into the Git master) that moves the DatasetOpKernel implementation for tf.contrib.data.ignore_errors() into a shared library. As far as I can tell from the presubmits, that code is working, but it's possible that there's a gap in test coverage for this case. We may have to wait a few days until the code is merged into Git to confirm this.
In the meantime, I'm a little confused about why the typeid has to cross the shared object boundary at all. As far as I understand, the DatasetVariantWrapper class and code that manipulates it should be entirely internal to dataset.cc, and hence libtensorflow_framework.so; and the symbol should neither be visible to nor used in the custom op library. Do you have some example code that exhibits the problem?

Interesting that you apparently got this to work successfully.
I don't have a small reproducible test case for this right now, unfortunately, so I spotted it in a sizable code base which uses cmake and has a non-trivial dependency, but I'm sure I can make one.
Your point about DatasetVariantWrapper not needing to be in the custom op library is a good one. Thanks for pointing that out. I'll look into this some more.

I can just confirm that I was able to build the internal version (with the IgnoreErrorsDatasetOp moved to a separate .so) as a PIP package and run tensorflow/contrib/data/python/kernel_tests/map_dataset_op_test.py, which invokes that op.
I suspect there is something different in the way the custom op .so is built in our Bazel build, and how it is built in your CMake build. (Are you building TensorFlow using Bazel and then building the external library with CMake?) I'll follow up on this thread with more details when the code is available in the master branch.

That's good to hear.
I am building tensorflow using Bazel, and the building the external library
using CMake. A reasonable thing for me to do is to link against the latest
nightly build, rather than building from source. (I built from source only
because I was changing the error message to understand the problem better.)
The appropriate linker flags and so on are acquired via tf.sysconfig.*
functions.
I'll build a small test case myself (in progress right now...) and get back
to this issue with the results I see.
On Sat, Feb 10, 2018 at 5:28 PM, Derek Murray<EMAIL_ADDRESS>wrote:

I can just confirm that I was able to build the internal version (with the
IgnoreErrorsDatasetOp moved to a separate .so) as a PIP package and run
tensorflow/contrib/data/python/kernel_tests/map_dataset_op_test.py, which
invokes that op.
I suspect there is something different in the way the custom op .so is
built in our Bazel build, and how it is built in your CMake build. (Are you
building TensorFlow using Bazel and then building the external library with
CMake?) I'll follow up on this thread with more details when the code is
available in the master branch.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/issues/16924#issuecomment-364710874,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEi_UAB1v3m0CI1Y663pRATV52s17rgSks5tTkItgaJpZM4SBGlS
.

--
Daniel Galvez
http://danielgalvez.me
https://github.com/galv

Okay, this bug is my mistake, it turns out. It appears I was loading an extra stale copy of a shared object, form what I can tell.
For those curious, I did make a tiny sample project, which helped me realize the issue was certainly on my side. If anyone ends up on this page looking for a how-to on creating a new dataset op, you can check out this repo.
Thanks for the help @mrry!

Thanks for confirming, and for being a trailblazer with this new feature! Please don't hesitate to get in touch if you run into other problems.


1.17?

It now crashes the server when player joins

You are trying to use it on 1.17? This is not yet updated to 1.17. It is for 1.16.5 currently.


Detect shell using /etc/password before falling back to bash

I recommend a more common way:

getenv(SHELL)
getpwuid()->pw_shell
/bin/sh

@bAndie91 we do (1) and (3) indeed. We definitely want to implement (2). Do you know how portable is getpwuid()->pw_shell ?

Is that accessible from the command line given that this is all written in Go?

According to manual, getpwuid is conforming to SVr4, 4.3BSD, POSIX.1-2001.
Second question is a bit obscure to me. you can call getpwuid by getent passwd shell command, but I don't know anything about golang binding of libc function.


Build fails for nextjs 12..

Description
with the new support of next/navigation module, versions of next-intl ^2.7.5 don't support nextjs 12 anymore since the package next/navigation doesn't exist for that version thus the build fails. I had to lock the version of next-intl to exactly 2.7.5 yesterday since it broke the CI/CD pipeline. please fix or remove the new version from the minor compatible versions with 2.7.5
Mandatory reproduction URL (CodeSandbox or GitHub repository)
https://codesandbox.io/p/sandbox/next-intl-bug-template-pages-forked-by8wxd?file=%2Fsrc%2Fpages%2F_app.tsx%3A11%2C1
Reproduction description
Steps to reproduce:

Open reproduction
run yarn build

Expected behaviour
you should get the following error:
yarn run v1.22.19
$ next build
info  - Linting and checking validity of types
info  - Creating an optimized production build
Failed to compile.

./node_modules/next-intl/dist/next-intl.cjs.production.min.js
Module not found: Can't resolve 'next/navigation' in '/project/home/an1bra/workspace/node_modules/next-intl/dist'

Import trace for requested module:
./node_modules/next-intl/dist/next-intl.cjs.production.min.js
./node_modules/next-intl/dist/index.js

> Build failed because of webpack errors
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Uh, thanks for the report—will look into this! Sorry for the inconvenience caused!

Thank you, it might have happened to a lot of people who haven't upgraded to next 13 yet, well considering they don't have their lock file frozen.


example board

flowchart TD
Start --> CheckClanTab
CheckClanTab[Open Clan Tab] --> ExportButtonClicked
ExportButtonClicked[Export Button Clicked] --> SendToGoogleSheet
SendToGoogleSheet[Automatic upload to Google Sheet] --> CompareWithCurrentSheet
CompareWithCurrentSheet[Compare Against Current Sheet] -->|Player Exists| UpdateLastOnlineTime
CompareWithCurrentSheet -->|Unknown Player| FetchLeaderboardData
UpdateLastOnlineTime[Update Player's Last Online Time] --> EndUpdate[End]

FetchLeaderboardData[Fetch Hiscore Data] --> ClassifyPlayers

ClassifyPlayers[Classify Players] --> FirstTimeCheck
FirstTimeCheck[Is this player's first time being checked?] -->|Yes| AddToPossibleNameChange
FirstTimeCheck -->|No| LookupSuccessful
LookupSuccessful[Is lookup successful?] -->|No| GrabPreviousLeaderboardEntry
GrabPreviousLeaderboardEntry[Grab Player's Previous Hiscore Lookup] --> AddToNameChangedPlayers
LookupSuccessful -->|Yes| AddToExistingPlayers

AddToPossibleNameChange[Add to New Player List] --> CompareNewAndFailedPlayers
AddToNameChangedPlayers[Add to Name Changed List] --> CompareNewAndFailedPlayers
AddToExistingPlayers[Add Player to Sheet] --> Update_Like_Normal[End]

CompareNewAndFailedPlayers[Compare New Player List to Name Changed List] --> ForEachNewPlayer
ForEachNewPlayer[For Each New Player] --> CompareWithNameChangedPlayers
CompareWithNameChangedPlayers[Compare Against Name Changed Player] --> TotalXPComparison
TotalXPComparison[Compare Total XP] -->|player has less xp| CompareWithNameChangedPlayers
CompareWithNameChangedPlayers -->|No Matches| AddNewPlayer
TotalXPComparison -->|player has more xp| ForEachBoss
ForEachBoss[For Each Boss/Clue/Etc.] -->|player has less kc| CompareWithNameChangedPlayers
ForEachBoss -->|Player has more or equal KC on all bosses| DeepCompareStart
DeepCompareStart[Start Deep Compare] --> ForEveryBoss
ForEveryBoss[For Each Boss/Clue/Etc.] -->|greater than 100 kc difference| decreaseCompareThreshold[Name Change Likeliness + 1]
ForEveryBoss -->|less than 100 kc difference| increaseCompareThreshold[Do Nothing]
decreaseCompareThreshold --> ForEverySkill
increaseCompareThreshold --> ForEverySkill
ForEverySkill -->|greater than 500k xp difference| decreaseCompareThreshold2[Name Change Likeliness + 1]
ForEverySkill[For Each Skill] -->|less than 500k xp difference| increaseCompareThreshold2[Do Nothing]
decreaseCompareThreshold2 --> CheckTotalLikeliness
increaseCompareThreshold2 --> CheckTotalLikeliness
CheckTotalLikeliness[Is Name Change Likeliness greater than 5] --> |Yes| NameChangeOccurred
CheckTotalLikeliness --> |No| AddNewPlayer2[No Name Change Occured]
AddNewPlayer2 --> AddNewPlayer3[Add New Player]
NameChangeOccurred[Name Change Occurred] --> UpdatePlayerName[Update Player Name]

So the idea behind it is this.
There would be a runelite plugin that you enter a google sheet ID into.
When you click the clan tab, then click the export button, it would automatically take the current online players their ranks, and the current time (in UTC) and send it to the sheet.
The sheet then updates every player that names match to, it would also grab their current OSRS leaderboard data.
For any unrecognized name there's only 2 possibilities. They had a name change, or a new member.
If this is the first time a player is being checked, we add their name to a list of new players (possible name change people).
If an existing player fails a leaderboard check it can only mean their name is no longer on the leaderboard. Indicating a name change or a ban. They are added to the name changed list. We take their previous hi score look up, and set it as their current stats.
We then compare every new player to those on the name changed list via their hi score lookup.
We first check the two players total xp, if the new player has less xp than the name changed player, it can not be a name change, and we move to the next name changed player.
We then do the same with boss kc. Since you can never lose xp or kc this is a quick way to rule out 90% of cases.
If the new player has more (or equal) total xp, and kc in every boss. We start a deep compare.
During the deep compare we're looking for large differences between kc/xp. These checks are happening pretty often, how often depends on how many of us actually use it.  So realistically a player won't have 5+ skills and bosses with large gains (100kc or 1m xp). This threshold will obviously change based on how frequent our uploads are.
If we find a large amount of differences between KC/XP then it's not a name change. If the two users XP and KC are very similar, than it is a name change, and we update that player.

CM.xlsx

Summary of Changes:
Moving Gnome child rank to bottom of the titles and changing permissions so that Dunce Rank or higher can see drops.
Adding 2100 total lvl to bridge gap between Total lvl ranks.
Adding Maxed or high ehb + total lvl rank
Adding Mod 3 if there’s a use/want for players to be able to distinguish senior mods from newer ones.
Adding Official Celebration Ranks
Adding Official SOTW – Bingo Reserve Ranks

https://ironmancc-89ded0fcdb2b.herokuapp.com/teamTotals/23801


Added alias edge kind to java base. [phab:D1839]

Created by craigbarber at 2017-08-07 21:22:10:
This is required for the build indexer to express build rule alias relationships.

schroederc commented inline (context lost during migration) at 2017-08-07 21:27:07:
Remove extra newline

craigbarber wrote at 2017-08-07 21:47:59:

removed extra newline

schroederc accepted this revision at 2017-08-07 21:52:41

craigbarber closed via commit 285f221e65ca4afbbcb3ccb42646cf0fab281013 at 2017-08-07 22:05:31


Make FilterCommand index based to be aligned with other commands

Blocked by #211
Format would be filterTxn p/PERSON_INDEX ...

I am not sure if we wanna use the same index as the PREFIX_PHONE. On second thought I realised maybe we can stick to the current implementation, or like how the FIND is limited to names. Maybe we can make filterTxn to be specific to just filterTxn INDEX [amt/AMOUNT] [desc/DESC] [cat/CAT] ?

May need more brains @seanlim @GavinSin @Dino-Nuggies

I don't think it will be useful to force INDEX. One such use case I can think of is I know the amount to pay, but I forgot the person or description it was for. so it would be useful for me to execute filterTxn amt/10.00 so that I have lesser transactions to comb through.

I don't think it will be useful to force INDEX. One such use case I can think of is I know the amount to pay, but I forgot the person or description it was for. so it would be useful for me to execute filterTxn amt/10.00 so that I have lesser transactions to comb through.

Oh okay, nice. Agreed, then index should be optional, filterTxn [INDEX] [amt/AMOUNT] [desc/DESC] [cat/CAT].
Should we retain the current feature of filter by phone number then?

Depends on how you want to weigh usability with specificity. Filtering by phone shows that the user knows exactly who they want to filter by while having the Index makes it more convenient for them.


Updating Readme in Code Reviews

With this change I made modification to the readme file in the code-review section and udated the pull request template

I updated section about the goals of CRs
Added more details on healthy code review process.
refactored some of the other sections.

TODO: There are some sections that still need further details like how to chose PR size, and how to inluce the right SMEs.
#102 #106 #104

Looks good, thanks for the contribution!

thanks Tess for the suggestions! I have actually never used a linter for markdown :)

In reply to: 358917834 [](ancestors = 358917834)

good catch! thank you

In reply to: 358955611 [](ancestors = 358955611)

Looks great.  Thanks for the work.
I am approving, just a small comment -- as part of fixing the markdown style I noticed you removed the [ ] checkbox style items - they could have been fixed with * [ ] in case you wanted to keep them.
I will leave to you to decide what you thinks looks best and more consistent with the rest of the docs.


Deb package libcurl3 is needed at runtime for libcurl.so.4, but is uninstalled on line 95 of the Dockerfile

This causes marathon-lb to fail when the docker image is run, with this error:
Jul 17 21:27:28 ip-10-42-131-182.ec2.internal bash[2753]: ImportError: libcurl.so.4: cannot open shared object file: No such file or directory Jul 17 21:27:28 ip-10-42-131-182.ec2.internal bash[2753]: [ALERT] 197/212728 (3298) : Cannot open configuration file/directory /marathon-lb/haproxy.cfg : No such file or directory Jul 17 21:27:29 ip-10-42-131-182.ec2.internal bash[2753]: down: /marathon-lb/service/haproxy: 1s, normally up, want up Jul 17 21:27:29 ip-10-42-131-182.ec2.internal bash[2753]: Traceback (most recent call last): Jul 17 21:27:29 ip-10-42-131-182.ec2.internal bash[2753]:   File "/marathon-lb/marathon_lb.py", line 44, in <module> Jul 17 21:27:29 ip-10-42-131-182.ec2.internal bash[2753]:     import pycurl
I fixed this by reinstalling libcurl3 at the end of the Dockerfile, at the same time as python3 is reinstalled.

It also looks like something from curl4 openssl is needed at runtime as well:
ImportError: /lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by /usr/local/lib/python3.6/dist-packages/pycurl.cpython-36m-x86_64-linux-gnu.so)

Submitted a PR #597 changing the Dockerfile. Debian buster (Debian 10) doesn't have libcurl3 anymore in its repositories hence, replacing the package with the new version. Make the change in Dockerfile, build and run the new image. Should work fine.


Fix OIDC form and redirect urls

Closes #2674

Queueing this for merge so I can take some screenshots for docs


Updated contributing guidelines

Move the 'one shot' prerelease build functionality from develop to prerelease to avoid confusion.
Signed-off-by: Silas Davis<EMAIL_ADDRESS>

LGTM


Update to use CryptoSwift 0.7.1

The current build of JSONWebToken is using crypto swift 0.6.9.
I noticed the CI Build failed with commit "UPDATED to use crypto swift 0.7"
Has any progress been made on updating to use >0.7?

I have opened a pull request (#96) which brings the CryptoSwift version to 0.8.0 and fixes another issue which prevented successful builds. I have verified that builds are successful on both macOS and Linux.
If you need to, you can use my fork at the master branch while the PR awaits review. I don’t plan on making any further changes that would break the project, so referencing the master branch should be harmless. Just remember to monitor #96 and revert back to this repo, assuming it’s approved, for future updates.
In case you don’t know how to reference a Swift package at its master branch (requires Swift 4):
.package(url: "https://github.com/jonblatho/JSONWebToken.swift.git", .branch("master"))


adb.exe Kill Batch File

So, I have created a .bat file that Kills the adb.exe process that gets left behind when scrcpy closes or stops when the device has beeen disconnected. This is Windows only.
scrcpy-process-kill.zip

adb kill-server should also work.


[Feature Request] Add display for relations

I'm not aware of any way to add Users to Roles through Voyager.  It would be nice to have this UI feature across the board.
I'm thinking something like this:

Many-to-Many: http://www.bootply.com/yexwIRM76L.
One-to-Many: Perhaps some type of dropdown/select element?

It would seem that this is a duplicate (albeit much more generic copy) of #33


Pod install

How to run the pod install?

https://guides.cocoapods.org/using/index.html

pod install


Improve documentation formatting and structure

I am not satisfied how the documentation looks like, especially the Rules part:

when scrolling, it's hard to see the where one rule ends and another starts
the rule msg and docs are one after another, sometimes mentioning the same thing twice
the "New in Robocop" parameter may be moved outside the table I think

Above things can be improved and probably more, which I can't verbalize right now.
I will take a look and try to make the docs look more appealing and easier to understand.

Good idea, current design is already improvement over old one but there is still a lot to improve.
The rule msg could be outlined so it's clear that is actually what rule produces (and it would explain why the message is similar to rule docs).


Update a record approval workflow design

Missing feature - please implement following use case:
- user updates a record
-  another user (with role=audit) checks update and deny/approves it
-  updated record is visible

If custom workflow design is supported, this will be an implementation of a simple workflow design process.
Support more automated workflows and custom workflows to make the system powerfu

The granular access rules feature of Grist allows implementing such workflows.
An example essentially as described can be seen in the "US National Park Database" document in our template gallery for the "Ratings and Reviews" table. You can see the rules in play at https://templates.getgrist.com/4TRbjZXSPtR5/US-National-Park-Database/p/acl, if you search for "Rules for table Ratings and Reviews".
That example includes some additional rules than are strictly necessary. For the situation you describe, I'd suggest the following set:

Users with a special role (perhaps identified using a custom user attributes table) may toggle IsApproved column. No one else has permissions to set or change this column.
Anyone can view records with IsApproved == True.
Anyone can add records with IsApproved == False.
Anyone can view records they added (regardless of approval). To do that, a trigger-formula column createdBy can fill in user.SessionID, and a rule can compare rec.createdBy == user.SessionID to identify the record's creator, including support for anonymous browser sessions.
Anyone can edit records they added if IsApproved == False (i.e. before approval).
In all other cases, permissions are denied (so users cannot view or change records that don't fit the criteria above)

Access rules are very flexible. Some variations that you can consider are:

You could allow the record's creator to edit certain fields after approval
You could restrict some columns to only be visible to the auditors (even after approval)
You could add a trigger-formula column to record the auditor who toggled IsApproved, and another to record the time of approval.


How to access the selected value

Current Behavior
This is a wonderful package!! Thanks a lot.
There are two things I am having trouble with

I cant find a method or api to access the selected values
Somewhat related to the first problem!When using creatable  it is allowing to add an item that is already selected,

For example: Lets say I added 'Albania' . It would appear as a chip and next time it would not appear in the search and rightly so. However if I create a new item called Albania it would let me add and in the selected item lists two 'Albania' will appear.
Expected behavior/code
a way of accessing the selected values to use it or remove duplicated from the selected ones
Possible Solution
exposing the selected items array or allowing check ifExists in selected list of items would prevent this behavior

Hello there @becjit !
Thanks a lot for your kind words and your well explained issue.
This is something that may be useful, especially the first point. Currently the only way of getting the selected items is when a new item is selected and the onPickedChange method fires.
I'll see what I can do :)

@becjit Done, check CHANGELOG on how to implement the changes. Cheers !


New linter: Flawfinder

This pull request adds support for the Flawfinder linter for C and C++.   Resolves issue: #1161

Cheers! :beers:

We might find some issues with including files or something later. Let's get people to try it and see.


Online version of the spec is not up-to-date

The version of the P4-16 spec that can be found at https://p4.org/p4-spec/ is not the same version as the git master branch.
Is it normal?

Yes, it is normal. The version on the web is the released version of the spec (v1.0.0). git master is the working version.


Document the preferred way to upgrade a running Marathon installation to a new version

Users do not know how to upgrade Marathon - so we should improve the documentation on that.
Note from Harpreet:

As per my understanding the user ran into the problem because they did not really understand/know the best procedure for upgrading from Marathon 0.8.1 to 0.9.0. We have Upgrading to a Newer Version section on https://mesosphere.github.io/marathon/docs/ that gives some guidelines to users but ideally it would be better to have more detailed instructions for upgrading.
What I mean by that is, something like:

Back up Zookeeper data dir
Install the new version of Marathon (i assume this does not start Marathon)
Shutdown older version of Marathon
Start new version of Marathon
Make sure all tasks have moved over
Uninstall older version
Disclaimer : I do not know the correct procedure this is just an example
Having this documented would help a lot. We can either expand the Upgrading to a Newer Version section or write a KB article whatever you guys thinks would be best. I can write it if someone tells me the correct steps

It is defined here: https://mesosphere.github.io/marathon/docs/upgrade/index.html


Weird behaviour on requests with newlines

$ curl -vv -X POST http://a:b@localhost:8123 --data 'CREATE DATABASE test';
$ cat <<EOF | curl -vv -X POST http://a:b@localhost:8123 --data-binary @-
CREATE TABLE IF NOT EXISTS test.settings (fingerprint UInt64, type String, name String, value String, inserted_at DateTime64(9, 'UTC')) ENGINE = ReplacingMergeTree(inserted_at) ORDER BY fingerprint

EOF

$ cat <<EOF | curl -vv -X POST http://a:b@localhost:8123/?database=test --data-binary @-
INSERT INTO settings (fingerprint, type, name, value, inserted_at) VALUES (cityHash64('update_v3_5'), 'update',
     'v3_1', toString(toUnixTimestamp(NOW())), NOW())
EOF

< HTTP/1.1 400 BAD REQUEST
< Server: Werkzeug/3.0.1 Python/3.8.10
< Date: Fri, 03 Nov 2023 15:40:44 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 226
< Connection: close
<
Code: 62. DB::Exception: Code: 62. DB::Exception: Cannot parse expression of type String here: : While executing ValuesBlockInputFormat: data for INSERT was parsed from query. (SYNTAX_ERROR) (version <IP_ADDRESS>). (SYNTAX_ERROR)
* Closing connection 0

The third request gets error 400 with some misleading message.
On the other hand:
$ cat <<EOF | curl -vv -X POST http://a:b@localhost:8123/?database=test --data-binary @-
INSERT INTO settings (fingerprint, type, name, value, inserted_at) VALUES (cityHash64('update_v3_5'), 'update', 'v3_1', toString(toUnixTimestamp(NOW())), NOW())

EOF
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying <IP_ADDRESS>:8123...
* Connected to localhost (<IP_ADDRESS>) port 8123 (#0)
* Server auth using Basic with user 'a'
> POST /?database=test HTTP/1.1
> Host: localhost:8123
> Authorization: Basic YTpi
> User-Agent: curl/7.88.1
> Accept: */*
> Content-Length: 162
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 200 OK
< Server: Werkzeug/3.0.1 Python/3.8.10
< Date: Fri, 03 Nov 2023 15:45:31 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 0
< Connection: close
<
* Closing connection 0

When the same request is sent with no newline inside, the data gets ingested successfully.
Newlines in the middle of a request should be omitted by server.

To properly support POST data (including binary formats) we should expose a data hook in chdb equivalent to stdin (or --data) in clickhouse-local
# python3 -m chdb "SELECT 1", "Native" > output.native
# python3 -m chdb "SELECT * FROM table" < output.native
1

@auxten is there a way we can expose/hook to pass data into chdb without using rough stdin?

The data pipe won't be available until future versions of chdb will support it without stdin hacks.
I've implemented a workaround in 0.15.3 which should work around the newline issues until better things come along.

The workaround was weak and didn't cover binary protocols. so as predicted this needs an stdin hack to function.
Here's a prototype to test: https://github.com/chdb-io/chdb-server/pull/11


Fix Linkedin verification proof

Description
Fixes blockstack/blockstack.js#550
The DOM parsing selectors for the Linkedin
verification have been updated so that the
cheerio library could locate the correct data
The HTML generated from cheerio does not match
the HTML rendered in the browser which makes
it more difficult to parse for the correct
selectors
Testing

Prepare a local development instance of blockstack-browser
Ensure that you are using this forked branch (edit package.json to include "blockstack": "github:otech47/blockstack.js#test-linkedin-verification") of blockstack.js before running npm install
Authenticate with any Blockstack ID and follow the steps to verify your LinkedIn profile
Verify the publicly posted link and confirm the blue checkmark appears

I ran this test manually using an account where I had attempted a LinkedIn verification before and was able to get to step 4 successfully. I don't anticipate any issues with new accounts attempting the same since this is simply a matter of changing selectors.
I also revised the unit tests because it seems a test case was added  to handle the Linkedin verification failure. I removed that test and added extra test data to mock the HTML.
This is my 1st PR so I figured I might as well open this now to see if there is any testing guidance or comments from the maintainers or previous contributors @yknl  @shreyasthiagaraj on anything additional needed here.  For example I wasn't sure whether to include the dist/blockstack.js file or not.

 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.

@otech47 Can you merge this onto develop? I suspect if you remove the dist/blockstack.js file diff from the commit then it may not have merge conflicts, because other than that it should just be file renames.

@zone117x Just merged the upstream develop branch. Any squashing needed here?

This doesn't seem to work for me. Is LinkedIn displaying different DOM for different people? Were you able to test this @zone117x ?

This doesn't seem to work for me. Is LinkedIn displaying different DOM for different people? Were you able to test this @zone117x ?

@yknl I do have an active trial of LinkedIn Premium I tested with so I wouldn't rule it out. Will investigate some more

Also I realized the testing instructions aren't quite right since the branch doesn't have the /dist build anymore so I edited the testing instructions to point to a different branch of my fork

@yknl I just tested with a brand new LinkedIn account that doesn't have Premium and I was able to get the blue checkmark so it could be a difference in testing conditions. Where exactly did you get hung up? Could you post the link to the verification URL you tried?

@otech47 I haven't had a chance to test yet, but here is my verification URL (regular linkedin account) if you'd like to test that as well: https://www.linkedin.com/feed/update/urn:li:activity:6492115381757579264

Just had a chance to test this and works great! (Note to @yknl I pulled and compiled the fork then manually swapped it into the blockstack-browser node_modules, and ran npm run dev)
I wouldn't mind merging in current state, but I do have some suggestions on future-proofing this a bit.
The queries are against class names that are almost definitely being generated:
const profileLink = $('.share-update-card__header > a')

const postContent = $('.share-update-card__update-text')

Looking over their DOM, they implement:

Standardized Open Graph meta tags (e.g. <meta property="og:type" content="article">)
A mostly-standard element page structure (e.g. body > main > header)

Both of these are less likely to change than the generated classes, and luckily for us the two strings we need can be queried using both of these.
The username is inside a URL queryable through a reasonable DOM tree. I'd recommend using:
const profileLink = $('body > main header a')

And even better, the post content is in an open graph tag. I'd recommend using:
const postContent = $('head > meta[property="og:title"]')

Thanks for verifying @zone117x, I was able to get it to work, might have been issue on my end. I agree with using the open graph tag, this is what we do for facebook, twitter and instagram verifications. I'm not seeing the tags in the source of your LinkedIn verification post though.

I'm not seeing the tags in the source of your LinkedIn verification post though.

You are probably signed in to LinkedIn and viewing the html. They provide a different DOM for logged in users visiting the page directly. Makes sense they wouldn't include the open graph tags in that case, since they are meant for apps like Slack/Twitter/Facebook to fetch and use.

@zone117x you're right, it shows a different DOM when signed out. That would work 👍


chore: changed grants tab language to browse grants

@mattbroussard or @davidbkay Shall we go ahead and merge this change?


FR- Multicast Support

I'm just learning about multicast support with zwavejs which makes setting notifications on multiple devices near instant. There's a thread on the inovelli forums about it right now. This is definitely something that you should look into implementing, it speeds things up considerably over using the bulk_set service.
https://community.inovelli.com/t/instant-notifications-all-switches-using-multicast-on-ha/9077/29

This is awesome! I'll try to get it added within the next day or two. Thank you for letting me know about it.

Just added! I've only done limited testing on my switches but it worked perfectly. All that's needed now is to check "Use Multicast" on the given notification node and it will send the updated service call.


Sticky header not working

Hi, I am working on a data table to become sticky but it is not working, have tried putting classnames "sticky top-0 z-10" on table header, table head but still not working. Someone can help? Here's the code:

          <TableHeader>
            {table.getHeaderGroups().map((headerGroup) => (
              <TableRow key={headerGroup.id}>
                {headerGroup.headers.map((header) => {
                  return (
                    <TableHead key={header.id} className="sticky top-0 z-[100]">
                      {header.isPlaceholder
                        ? null
                        : flexRender(
                            header.column.columnDef.header,
                            header.getContext()
                          )}
                    </TableHead>
                  )
                })}
              </TableRow>
            ))}
          </TableHeader>

Have you tried adding relative to the wrapping div?

    <TableHeader>
      {table.getHeaderGroups().map((headerGroup) => (
      <TableRow key="{headerGroup.id}">
        {headerGroup.headers.map((header) => { return (
        <TableHead key="{header.id}" className="sticky top-0 z-[100]">
          {header.isPlaceholder ? null : flexRender(
          header.column.columnDef.header, header.getContext() )}
        </TableHead>
        ) })}
      </TableRow>
      ))}
    </TableHeader>

Have you tried adding relative to the wrapping div?

    <TableHeader>
      {table.getHeaderGroups().map((headerGroup) => (
      <TableRow key="{headerGroup.id}">
        {headerGroup.headers.map((header) => { return (
        <TableHead key="{header.id}" className="sticky top-0 z-[100]">
          {header.isPlaceholder ? null : flexRender(
          header.column.columnDef.header, header.getContext() )}
        </TableHead>
        ) })}
      </TableRow>
      ))}
    </TableHeader>

Yes already tried that still not working

Hmm, I managed to get it to work on my side, but don't remember the exact method 😬 Just found a comment in my repo, could you try updating the Table component and remove the div that is wrapping the table node? Here's what I have:
const Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(
  ({ className, ...props }, ref) => (

  )
);
Table.displayName = "Table";

This works! Big thanks. I've been working this for a week now and this only solves my problem. Kudos!

wow thanks. this fixed columns work

Hmm, I managed to get it to work on my side, but don't remember the exact method 😬 Just found a comment in my repo, could you try updating the Table component and remove the div that is wrapping the table node? Here's what I have:
const Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(
  ({ className, ...props }, ref) => (

  )
);
Table.displayName = "Table";

Thank you so much!! Have been trying since long


fix to fade in from display:none

Thank you for very useful modal.
I found bug, so report and create fix commit.
I could not scroll in iPhone5, because focused on overlay area.
So I want to change fade in modal from display: none.

@hidechae Thanks a lot for your contribution 👍 !


Write richness map script

The script to make Papilio species richness needs to be written. Can be largely based on src/summary/draw-species-richenss-maps-glm.R.

Also drawing from the glm script, create a separate script to create delta richness rasters/maps.

Mostly done, but could use some better labeling (via titles?) in map image output. ad09e00 and others.

Title functionality added in 0437811. Could use some additional consideration about how we communicate whether or not overlaps with host plants are considered in plot, but closing for now.


Kernel dump upload times out

Try compressing the KM crash dump before uploading. It shrinks file size from 600MB to 70MB.
The KM stress jobs have been failing, but we are not getting the crash dump due to a GH problem described below.
Context described in https://github.com/microsoft/ebpf-for-windows/issues/2822#issuecomment-1741379229_

Download from the VM on the runner to my dev box took 3 minutes. Granted this during the night, so network utilization could have been low, but still, this is over 10x faster than the timeout we're hitting at 35min consistently.
This suggests our runner pool is not at fault.

Filed https://github.com/actions/upload-artifact/issues/443 and trying to find an internal point of contact.

After long investigation - changing the adapter that was connected to the vswitch fixed this. Upload speed is still below nominal bandwidth, but it works now.