SPM12

Shall we move onto SPM12 as a default recommeded for aa?
I had a discussion with Guillaume Flandin and most of our spm_mods are/will be incorporated in SPM12 but not in SPM8. here is Guillaume's message:
many thanks for sharing this - this is very useful. I'm detailing below what I understood the modifications were for each file and their status in SPM. As you might notice, I often refer to SPM12 - that's because SPM8 is in a dead-end now and we won't add new features to it. I would strongly recommend that you have a look at SPM12 and see how all of your developments work with it - we tried to make it backward compatible as much as possible so if you were to encounter any problem, that would be useful information to us.

spm_run_realignunwarp.m
=> Handle 4D data
This was fixed in r5644 in SPM12 last September.

FieldMap_create.m
=> Handle 4D data (?)
In theory, the field "Select EPI to Unwarp" expects a single frame (epi.filter = 'image'; and epi.num = [1 1]; in tbx_cfg_fieldmap.m).
so there shouldn't be a problem there with 4D data. Unless dependencies are used without using "Expand image frames" first or that the batch is set up in a script that doesn't add the trailing ',1' for that entry as it should be. When does it happen for you?

spm_dicom_convert.m
=> Handle Siemens 7T data (?)
According to a diff, the only change is this:

if i == 2 && j == 1
warning('We assume the ICE dims are identical to account for the 7T scanner import to work [alevic]')
end
identical_ice_dims = 1;
Given that it forces identical_ice_dims to be 1 in all situations, I cannot make this change. I would need an example of DICOM data that SPM don't convert properly automatically, and, if a fix has to be made to the code, it should only take place with these sorts of data by finding a setting that detects them uniquely.

spm_render.m
=> Add output variable to get RGB images.
I modified spm_render in SPM12 so that the rendered images are available as RGB images in a cell array. If no display is available, the function will still run through (headless mode). There is still something to sort out with the global variable prevrend, but you can still call spm_render after manually setting the variable if you want to call the function programmatically.

spm_spm_saveresids.m
=> Provide access to the residuals.
The temporary files ResI* are normalised residuals used for smoothness estimation and, by default, are only a subset of all residuals images.
In SPM12, the option to save the residuals is explicitly available when estimating a GLM ("Write residuals?", Yes/[No]). This is implemented in a separate function spm_write_residuals.m (this requires an extra pass on the data but makes it unrelated to RFT, and you also have an option to filter out data by specifying an F-contrast).

spm_coreg.m / spm_hist2.m
=> Add the option to use a weighting volume when computing the joint histogram during coregistration.
Do you know the circumstances under which this option is useful? If it were to be added, I guess it would be better to modify the spm_hist2.c file unless the MATLAB version is now faster than the C equivalent.

Closing this - everyone should be defaulting with SPM12. Where there are version difficulties we should try to check and/or notify users.


Will sharp work in AWS lambda node v6.10 ?   The docs talks about node 4.X.

This issue suggests it may work with node 6:

https://github.com/lovell/sharp/issues/422

I would like to use sharp on AWS lambda with the latest node.js.

Hello, yes it will work, please see #1054 for some discussion about modernising the Lambda docs.

Thanks!


FIX: Test for the presence of the specified img2img

Resolves #56

Thanks for catching and fixing this.


Spherical camera projection

Resolves #166
Note: Unlike the orthographic camera, the spherical camera has no direct analogue that works in the rasterizer. So I've only added the new camera to the MaterialBall example for the moment. Happy to discuss though!

Thanks! Code looks good! But in terms of API I think I'm more leaning towards an FEATURE_EQUIRECT_RENDER #define instead of something like a "SphericalCamera" class that doesn't / can't actually provide a whole lot. What do you think?
Example looks good - I was thinking that adding the option to the "interior scene" demo might make a good amount of sense, too, since that's more the kind of scenario where you might use this kind of render.

@gkjohnson Happy to defer to your opinion of course, but I think having a special camera feels more intuitive to the user. E.g. let's say we have a flag for equirect render, and they are using a Physical camera with DOF settings - it may not be obvious why the DOF settings stop working once they enable the equirect flag.
Adding to the interior scene is a good idea, I'll do that.

I think a Spherical Camera class is also more natural.  But it is awkward that there isn't an equivalent in Three.js.  Although there is CubeCamera in Three.js.  Now it is a spherical camera, but it also has sub-cameras to represent the various faces of the cube.  I wonder if it makes sense to re-interpret CubeCamera as Spherical within this renderer?  It sort of does to me.  But... I am not sure.

How do people feel about calling the camera an EquirectCamera since that's the spherical projection it's using?

Makes sense.
V-Ray has a single Camera object, but then it has a drop down on that Camera to specify: Perspective, Orthogonal, Spherical Panorama (equirectangular), Box (e.g. CubeMap), FishEye, etc....  https://docs.chaos.com/display/VMAX/Camera
But then the camera has a lot of additional properties because it is sort of the merger of all of these camera types into one.

Made the suggested changes and added the new camera(s) to the interior scene. I had to move the camera position a bit for the best effect.

Hey @gkjohnson The reason the camera controls feel funny in the interior scene is that the camera target is very close to the camera origin, this is intended to give the ability to look around the room without the camera needing to leave the room. We could disable the controls but I don't know if that's worthwhile? We don't really want to imply that the equirect camera can't move/rotate. What do you think?

I think I just want the interaction to be less confusing in the example. When the user is orbit-rotating the camera with the equirect render it's really not clear what's happening especially with the material orb staying in one spot. Realistically I don't expect anyone to be looking at the equirect render the way it's showing in the demo - it's really just for debugging and to show it's possible. If there winds up being confusion around the capability of the equirect camera then we can change it but I think a static camera should be suitable enough. If it is going to rotate in that I think I expect it to rotate around the camera origin.
So I think those are my two preferred alternatives:

static camera a hand-picked spot with no rotation
static camera at a custom hand-picked spot with rotation only around the camera origin

That's my angle, at least. Happy to hear other options!

For rotation around the camera origin, maybe it would be more natural to use PointerLockControls?

I think the method you used with an OrbitControls and short radius worked pretty well. The simplest approach might just be two sets of OrbitControls - one for the equirect camera that sets the min / max distances to the same really small value.

Excellent work again! Thank you!


No such new app seen after installing

I did go through the process of installing on ubuntu and did the Extra command as well
Am I supposed to see a new app in the menu to run or a file to run as an app or sth? because I see no such thing!

@Axoncodes ,
I faced the same issue, that was it's not enabled by default.
can you confirm that you enabled the extension with the following command?
gnome-extensions enable chatgpt-gnome-desktop@chatgpt-gnome-desktop

At which stage or location should I run it? This is response of the command you mentioned:
-gnome-desktop
Extension “chatgpt-gnome-desktop@chatgpt-gnome-desktop” does not exist

@Axoncodes , I faced the same issue, that was it's not enabled by default. can you confirm that you enabled the extension with the following command?
gnome-extensions enable chatgpt-gnome-desktop@chatgpt-gnome-desktop

At which stage or location should I be running the command? the response of the command u mentioned is:
Extension “chatgpt-gnome-desktop@chatgpt-gnome-desktop” does not exist

@faheemKamboh Oh the main problem was restarting, and then running the command u mentioned, did the job, thanks a lot

@Axoncodes , I faced the same issue, that was it's not enabled by default. can you confirm that you enabled the extension with the following command?
gnome-extensions enable chatgpt-gnome-desktop@chatgpt-gnome-desktop

At which stage or location should I be running the command? the response of the command u mentioned is: Extension “chatgpt-gnome-desktop@chatgpt-gnome-desktop” does not exist

So what I did was, after following the given flow, I checked all disabled extensions in by ubuntu 22.04.1 with following command
gnome-extensions list --disabled
Output of the command was something like
chatgpt-gnome-desktop@chatgpt-gnome-desktop
then I entered following command
gnome-extensions enable {hit twice/thrice tab, which should autocomplete disabled extension(if only one) or you can paste the extension name}

@faheemKamboh Oh the main problem was restarting, and then running the command u mentioned, did the job, thanks a lot

Great!
If it's resolved, should close the issue.

@faheemKamboh Oh the main problem was restarting, and then running the command u mentioned, did the job, thanks a lot

Great! Happy to Help,
If it's fixed, you should close the issue!

Enabling the extension inside gnome-shell-extensions is necessary :)

noted, thanks


Process files

Having a separate adapter needed for each file type seems like it will get inconvenient at some point, and there doesn't seem to be anything in scripts/adapters/shp.py that is shapefile specific, other than the the file extension.
Im guessing that the majority of the data will shapefiles, then kml/kmz, and a couple ESRI file geodatabases and ESRI personal geodatabases.

All of shp.py is shapefile specific. geodatabases and kml/kmz are handled differently. Having a common adapter interface with read(fp) -> geojson is the cleanest way to do that.

Ok, that sounds fine. Will each of the adapters will call into a shared module for doing transformations on the feature properties?

Fiona bundles a transformation function for shapefiles. We'd have to use pyproj for other files. That would be shared between kml and geodatabases.

I meant normalizing properties, not transforming coordinates.

Oh, right. Yeah, that would be shared.


New Feature: Delete User

What kind of change does this PR introduce?
Delete user feature
#69
What is the current behavior?
Please link any relevant issues here.
What is the new behavior?
Now, we can remove users by it's uid
Additional context
Add any other context or screenshots.

@kiwicopple is this documentation up-to-date then?
const { user, error } = await supabase.auth.api.deleteUser(
  '715ed5db-f090-4b8c-a067-640ecee36aa0',
  'YOUR_SERVICE_ROLE_KEY'
)

I'm guessing it's just a wrapper around the DELETE /admin/users/{user_id} API endpoint. If so, and if there are other wrappers like this out there (e.g. to programmatically create users without them having to login), I think it'd be good to document all of them.


changing jquery to lower case

lower-case on jquery - on my systems (osx, and linux) - the jquery is lowercase.
on OSX it isn't a problem because filesystem is insensitive - but on linux (production) it is an error.
i think it is better to lowercase it.

@avanzu can you merge this ?


chrome browser zoom, scroll failure.

Mac osx 10.9.4
chrome version 37.0.2062.94
chrome browser zoom, scroll failure.

Still have a problem.


fix(avm): CALL operand resolution

Cherrypicking some fixes by @sirasistant.

#9018  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @fcarreiro and the rest of your teammates on  Graphite

Merge activity

Oct 4, 6:06 AM EDT: @fcarreiro merged this pull request with Graphite.


This is useless yes

I don't know what the point of this is.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 944b7b97-efbf-e83d-9330-a825d901819d
Version Independent ID: 6c49c1c5-a178-0c9d-4768-fef1507b1a55
Content: Microsoft Defender for Endpoint on Linux
Content Source: microsoft-365/security/defender-endpoint/microsoft-defender-endpoint-linux.md
Product: m365-security
Technology: mde
GitHub Login: @Dansimp
Microsoft Alias: dansimp

@Awesomecat713, is this a general comment regarding Microsoft Defender for Endpoint on Linux or is there an error on the page?

@yogkumgit This document seems to be up to date. No changes needed as of now.

@msbemba Thank you very much for the contribution and sharing this explanation. @Awesomecat713 Hope this comment is helpful for you. If you see a documentation update is required, please feel free to open an issue for the same. We proceed here to close it. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


Fixed getting the constructor for pure sodium

This should be a fix for pure sodium, because right now in the current version of Sodium in 1.20.1 it crashes, because the current way of getting the correct constructor isn't working for me.
I used a slightly different approach, which at least for me, works now.
I wrote some comments in the code to explain what i am doing differently now.
Tested only in 1.20.1, without sodium extra or reese.
EDIT: You can remove my debug comments on the two e.printStacktrace(), I forgot to remove them c:

Only just saw this somehow.. Appreciate it though, made my life much easier updating the mod to 1.20.6 (and probably 1.21 too, haven't done that yet)


Progressbar for issues

What about a progressbar for issues? The user would change the status, so others could see at which point the current progress (in pourcent) is.
This is probably a low-priority-feature, but it would be "nice to have"

Github use task list to display progress of issue and PR maybe we could do the same ?


Add stash 3.8 automated setup options

Fix #63

Sorry, I did not have opportunity to test if this actually automates the install.


Conflict between flutter_keyboard_visibility and flutter_keyboard_visibility_temp_fork (a dependency of flutter_quill)

Is there an existing issue for this?

[X] I have searched the existing issues

Flutter Quill version
10.8.5
Steps to reproduce
added package in yaml and try to build project.
flutter doctor:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.24.3, on macOS 15.1 24B83 darwin-arm64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 16.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.2)
[✓] VS Code (version 1.95.1)
[✓] Connected device (5 available)
[✓] Network resources
• No issues found!
Expected results
build
Actual results
crash
Additional Context

Screenshots / Video demonstration
[Upload media here]

Logs
[https://pastebin.com/0DfQN44b](simulator logs)

Can you share the log directly here?

I'm unable to reproduce the issue, can you share more details steps to reproduce and test it in a new Flutter project?

I tried running a new Flutter project, and everything worked fine, so the issue seems specific to my main project. I also tested with versions 10.8.3 and 10.8.2, but the issue persists in both.
my other packages:
cached_network_image: ^3.4.1
carousel_slider: ^5.0.0
collection: ^1.18.0
device_info_plus: ^10.1.2
dio: ^5.7.0
dotted_border: ^2.1.0
equatable: ^2.0.5
file_picker: ^8.1.2
flutter:
sdk: flutter
flutter_advanced_drawer: ^1.3.6
flutter_bloc: ^8.1.6
flutter_svg: ^2.0.10+1
flutter_timezone: ^2.1.0
flutter_typeahead:
git:
url: https://github.com/AbdulRahmanAlHamali/flutter_typeahead
ref: eb2f7633c1c58ed24844f809b2c4fa56faeb16e5
get_it: ^7.7.0
intl: ^0.19.0ng_animation_widget
loading_animation_widget: ^1.2.1
mime: ^1.0.6
package_info_plus: ^8.0.2
shared_preferences: ^2.2.3
timelines: ^0.1.0
url_launcher: ^6.3.1

@EchoEllet @Abolfazlnezami2000 I had a crash occurring to me after migrating from my own fork of flutter_quill to version 10.8.5. I turns out that GeneratedPluginRegistrant.m tried registering FlutterKeyboardVisibilityPlugin twice. I had a dependency to flutter_keyboard_visibility and flutter_quill has it's own fork of it, but both register their respective plugins under the same name, therefore this crash had occurred.
I temporarily removed flutter_keyboard_visibility from the project and I'm relying on flutter_keyboard_visibility_temp_fork  for now.
Part of GeneratedPluginRegistrant.m that caused the crash:
[FlutterKeyboardVisibilityPlugin registerWithRegistrar:[registry registrarForPlugin:@"FlutterKeyboardVisibilityPlugin"]];
[FlutterKeyboardVisibilityPlugin registerWithRegistrar:[registry registrarForPlugin:@"FlutterKeyboardVisibilityPlugin"]];
You can find it in project/ios/Runner/GeneratedPluginRegistrant.m.

I turns out that GeneratedPluginRegistrant.m tried registering FlutterKeyboardVisibilityPlugin twice. I had a dependency to flutter_keyboard_visibility and flutter_quill has it's own fork of it, but both register their respective plugins under the same name, therefore this crash had occurred.

This issue doesn't happen with desktop including macOS since the iOS and Android implementations are within the same package for both the fork and the upstream package.
The collision can happen between those packages for Android, iOS, and the web. Depending on how the plugins are loaded in the platform, they can either crash or cause unexpected behavior such as using one of the platform implementations for both packages. This is a minor issue, there are not much of differences between the two.
Solutions:

Remove flutter_keyboard_visibility and use flutter_keyboard_visibility_temp_fork in the client project. The flutter_keyboard_visibility still hasn't been updated.
Remove flutter_keyboard_visibility_temp_fork and use flutter_keyboard_visibility in the flutter_quill, this will revert the WASM compilation fix and the Android compile SDK issue. Will avoid this solution.
Provide an API for flutter_quill in quill_native_bridge to access the keyboard visibility and remove flutter_keyboard_visibility_temp_fork. Adding more features is on hold due to numerous TODOs in quill_native_bridge and the need for solid test coverage.
Change the plugin class name for the Android and iOS implementation of flutter_keyboard_visibility_temp_fork. The easiest though it will force updating the generated class GeneratedPluginRegistrant for all clients with the latest version.

See the plugin platforms section in pubspec.yaml of the flutter_keyboard_visibility_temp_fork package.

. You can check your own to get further details onto what's going on.

@Abolfazlnezami2000 Can you confirm if you have [flutter_keyboard_visibility](https://pub.dev/packages/flutter_keyboard_visibility) in your pubspec.yaml?

Hi, I just bumped into this problem while updating dependencies. I can confirm that my app stops working (won't start) on iOS when I have both the latest flutter_keyboard_visibility and flutter_quill packages.
I didn't get any useful errors on VSCode console, but while running the project from Xcode I got this: "Duplicate plugin key: FlutterKeyboardVisibilityPlugin".
Replacing flutter_keyboard_visibility with flutter_keyboard_visibility_temp_fork in my pubspec.yaml and changing imports accordingly fixed the issue and I was able to run the app.

I fixed the issue by updating the platform plugin name to a different name and the issue is now fixed for Android, iOS, and Web even when you're using both flutter_keyboard_visibility and flutter_keyboard_visibility_temp_fork. Desktop platforms don't have this issue.
Can you test and see if the issue exists after using the latest pre-release with the following in your pubspec.yaml:
# TODO: To fix https://github.com/singerdmx/flutter-quill/issues/2346
dependency_overrides:
  flutter_keyboard_visibility_temp_fork: ^0.1.2-alpha

I already tested it though to double-check. I will publish it as stable once you confirm.

I have another package that depends on flutter_keyboard_visibility, this is why the collision occurs.
 build/flutter_keyboard_visibility/intermediates/runtime_library_classes_jar/debug/classes.jar: R8: Type com.jrai.flutter_keyboard_visibility.BuildConfig is defined multiple times: /Users/loic/chairwatch/chairwatch_flutter/build/flutter_keyboard_visibility/intermediates/runtime_library_classes_jar/debug/classes.jar:com/jrai/flutter_keyboard_visibility/BuildConfig.class, /Users/loic/chairwatch/chairwatch_flutter/build/flutter_keyboard_visibility_temp_fork/intermediates/runtime_library_classes_jar/debug/classes.jar:com/jrai/flutter_keyboard_visibility/BuildConfig.class

Thanks @EchoEllet, I confirm that your fix seems to work for me (tested on iOS).

Fixed and published as stable, run flutter pub upgrade. It's no longer required to remove flutter_keyboard_visibility or override the version.


Simplify implementing newtype Map key types

@dakom raised this. Sometimes you want to use something with more meaning than String (or w/e), and newtype is the right option.
Let's make sure it's not overly complicated to implement all the right traits (OwnedKey, Key, std::borrow::Borrow). Maybe a derive macro is in order.

FYI here's an example from storage-plus:
use cosmwasm_schema::cw_serde;
use cosmwasm_std::{StdResult, Uint64};
use cw_storage_plus::{IntKey, Key, KeyDeserialize, Prefixer, PrimaryKey};
use std::{hash::Hash, num::ParseIntError, str::FromStr};

/// An id for a task. This is a simple wrapper around a `Uint64` internally.
/// Serialized on the wire as a string
#[cw_serde]
#[derive(Copy, PartialOrd, Ord, Eq)]
pub struct TaskId(Uint64);

impl Hash for TaskId {
    fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
        self.u64().hash(state);
    }
}

impl TaskId {
    /// Construct a new value from a [u64].
    pub fn new(x: u64) -> Self {
        Self(x.into())
    }

    /// The underlying `u64` representation.
    pub fn u64(self) -> u64 {
        self.0.u64()
    }
}

impl<'a> PrimaryKey<'a> for TaskId {
    type Prefix = ();
    type SubPrefix = ();
    type Suffix = Self;
    type SuperSuffix = Self;

    fn key(&self) -> Vec<Key> {
        vec![Key::Val64(self.0.u64().to_cw_bytes())]
    }
}

impl<'a> Prefixer<'a> for TaskId {
    fn prefix(&self) -> Vec<Key> {
        vec![Key::Val64(self.0.u64().to_cw_bytes())]
    }
}

impl KeyDeserialize for TaskId {
    type Output = TaskId;

    #[inline(always)]
    fn from_vec(value: Vec<u8>) -> StdResult<Self::Output> {
        u64::from_vec(value).map(|x| TaskId(Uint64::new(x)))
    }
}

impl std::fmt::Display for TaskId {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        write!(f, "{}", self.0)
    }
}

impl FromStr for TaskId {
    type Err = ParseIntError;
    fn from_str(src: &str) -> Result<Self, ParseIntError> {
        src.parse().map(|x| TaskId(Uint64::new(x)))
    }
}

opened a PR for a derive macro on cw-storage-plus that might be a good starting point: https://github.com/CosmWasm/cw-storage-plus/pull/88


Remove redundant declarations.

The revised hip/hip_ext.h have that declarations.

So far, without this patch, several libraries failed to be compiled due to that redundant declarations.

So apps would need to include hip/hip_ext.h (for now hip/hip_hcc.h) ?

they needs revising their code to remove the including of hip_hcc.h, which still works so far with deprecated warning message. If any application fails to be compiled after this, it probably includes that hip_hcc.h conditionally with HCC checking. Their needs revising as well to include hip_ext.h directly.

BTW, even if they includes hip_ext.h directly, we still have the redundant declaration issues (due to the default argument initializers) as they are defined twice for hip-clang.


Error in .jscsrc

Unexpected token (2:9) at ./.jscsrc.js :
     1 |{
     2 | "preset": "google",
-----------------^
     3 | "validateIndentation": "\t",
     4 | "validateQuoteMarks": "\"",

Can you be a bit more specific? :)

What file is this?
Where was this error generated?
What did you do?
Can you recreate this issue?

The file is jscsrc.js in the root directory.
Error is generated when executing jscs ./.

Looks like json, maybe js object notation is required?

Honestly, I never use jscs ;) so can't help you with this. Check the history to see who added it. ;)

Fixed.


Update shiny-deploy action to add testing instance

As discussed in 11/14 FAIR/HTAN stakeholder meeting the shiny-deploy action needs to be updated to include a testing instance.

Additionaly the action currently genrates two warnings

shiny-deployNode.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: actions/checkout@v2, r-lib/actions/setup-pandoc@v1

r-lib/actions/setup-pandoc@v1 is deprecated.r-lib/actions/setup-pandoc@v1 is deprecated. Please update your workflow to use the 'v2' version.

shiny-deploy
Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: actions/checkout@v2, r-lib/actions/setup-pandoc@v1
r-lib/actions/setup-pandoc@v1 is deprecated.
r-lib/actions/setup-pandoc@v1 is deprecated. Please update your workflow to use the 'v2' version.

Duplicate of #61


Add crate: EANT2

Please add https://github.com/pengowen123/eant2 to category: Evolution Algorithms
EANT2 is an Evolutionary algorithm that uses the Common Genetic Encoding (CGE) to encode neural networks and CMA-ES as a weight optimizer.
Essentially, EANT2 evolves the topology of the Neural Network and CMA-ES tries to find the optimal weights for each topology.

Looks great! Thanks for pointing it out. Let me know if I got something wrong in adding it.
And feel free to reopen this (or a new issue) once it's published on crates.io.


bug : can not add a plugin to an instance I can change

Currently, we must have the "add" permission to a specific model when we want to "add" a new plugin to the placeholder of this model's existing instance. This is the same for "delete" permission. Problem is : maybe I can "change"  the instance but not add a new one. So, I'm not able to add (or delete) a plugin if I only have a "change" perm on the instance.
This PR change the permission logic for placeholder and plugins :

to change a placeholder/plugin, we must have change or add perm on attached object
idem for add
to delete a placeholder/plugin, we must have change, add or delete perm on attached object

This PR is in three commits :

first is full backward compatible :

if there are attached objects : only test the first one and return True or False
if there is not any attached object, return nothing
if given key param is something else than add, change or delete : test this perm key on attached object

second one raise an Exception if perm key is not add, change or delete (cf docstring which list availaible values for key param). This is because perm logic must explicitely set (e.g : a cut perm should have same tests than delete, but a copy perm should have same tests than add.)

the last one is to do what the docstring says :

"For each attached object, permission has to be granted either on attached model or on attached object.".

Test is not only performed on the first attached object if one of attached objects fail perm tests, then False is returned. None is still returned if there is not any attached objects.

Nice change @DylannCordel!
I'd like a test to assert the new behaviour and the relevant documentation

@yakky : I change the existing PlaceholderPluginPermissionTests to test new behaviour and all (usefull) perms combinations. Old test was using real request : this is not any more possible because it takes too much time and is not the job of those tests to check that admin works well (it is already tested elsewhere). So I directly call admin's interface's methods which check permissions with the same request. Unfortunately, to achieve this, I need to remove the user._perm_cache each time his perms are changed to force the perm backend to retrieve all user permissions. If someone has a better idea to avoid to remove a protected attribute, it would be great.

@DylannCordel great job. I'm totally fine with tinkering with user._perm_cache. There is no public API to do this. There's a lot of hacks like this in our tests to really test low-level behavior. It will cost some test refactoring somewhere in the future if the privati API will change, but I think it's a good tradeoff

@yakky Thx for your feed back. If you are okay with the _user_perm_cache trick, than  I am done with this PR :)

@mkoistinen @evildmp it'd lean to merge this into 3.1 as it's legitimate fix, but it substantially changes the way permissions are applied and I think we should give users proper information regarding this

@DylannCordel great job here!


gemini update: trying to overwrite read-only files should raise an error

For a long time I "gemini updated" while having the wrong databases destination set (--annotationdir or the gemini-update.yaml). The destination folder was read-only and I got no warning (only a super-quick update process skipping everything as if already up-to-date).
An error should be raised if a database can be updated but the location cannot be written.

Assigning @chapmanb in hopes that he'll address this. :-)

Sorry about the issues. Silent failures are bad. I'm trying to replicate this but can't seem to do so. If I create a root-owned directory (/usr/gemini-test) I get permission errors trying to create the directories. If I create everything manually, I get a permission error when trying to write:
$ gemini --annotation-dir /usr/gemini-test update --dataonly
Traceback (most recent call last):
  File "/usr/local/share/bcbio_nextgen/anaconda/lib/python2.7/site-packages/gemini-0.18.0-py2.7.egg/gemini/install-data.py", line 165, in <module>
    install_annotation_files(args.anno_dir, args.dl_files, args.extra)
  File "/usr/local/share/bcbio_nextgen/anaconda/lib/python2.7/site-packages/gemini-0.18.0-py2.7.egg/gemini/install-data.py", line 94, in install_annotation_files
    os.makedirs(anno_dir)
  File "/usr/local/bin/../share/bcbio_nextgen/anaconda/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/gemini-test/gemini/data'

So gemini seems to complain loudly for me. I'm probably misunderstanding your setup to replicate this correctly -- what does the destination folder look like, permissions wise, that gemini silently skips it? Thanks for the report and help debugging.

It is most confusing indeed. I seem to still have path issues even after editing the yaml and --annotationdir. I think I will just remove everything and reinstall. Thanks for your time.


[BUG] box.py susceptible to breakage when commited with trailing-whitespace pre-commit hook

[X] I've checked docs and closed issues for possible solutions.
[X] I can't find my issue in the FAQ.

Describe the bug
We committed a copy of the rich module to a git repo as part of building an AWS lambda layer.
box.py got mangled by the pre-commit trailing-whitespace hook.
Would it be possible to redefine the box character definitions in a way that does not have trailing white space?
Platform

Click to expand
This was on a Mac, with python 3.10.12 and rich v13.4.2
Other details not relevant to this issue.

I guess implicit line continuations would address that. I'd accept a PR.

Any preferred style?
eg. this works:
box = "\n".join(
    [
        "  ╷ ",
        "  │ ",
        "╶─┼╴",
        "  │ ",
        "╶─┼╴",
        "╶─┼╴",
        "  │ ",
        "  ╵ ",
    ]
)

I was thinking this, so there would be no work at runtime:
box = (
        "  ╷ "
        "  │ "
        "╶─┼╴"
        "  │ "
        "╶─┼╴"
        "╶─┼╴"
        "  │ "
        "  ╵ "
)

I hope black doesn't mangle that. If it does you may have to disable formatting for those lines.

Black mangles that to one line.

There's a comment you can add to disable formatting for a given block. Something line # fmt: off IIRC.

Also, it doesn't work anyway - it is read as a single line.

I forgot the\n characters, but I think it should work.

Ah yes - will work with \n characeters embedded in the strings.

This sort of thing works:
# fmt: off
box = (
    "  ╷ \n"
    "  │ \n"
    "╶─┼╴\n"
    "  │ \n"
    "╶─┼╴\n"
    "╶─┼╴\n"
    "  │ \n"
    "  ╵ \n"
)
# fmt: on

Works for me.


Update source-ip.md

supported values: "ClusterIP", "ExternalName", "LoadBalancer", "NodePort"

/easycla

Hey @maybgit,
Since you didn't sign CLA agreement, we cannot review this PR and move forward.
I'm closing this PR now, but feel free to /reopen once you are ready to sign CLA. (tutorial here)
/close


build: update to MDC 5.0.0 final

Bumps to the final version of MDC 5.0.0.

Coming back to this, are we supposed to also bump the MDC_PACKAGE_VERSION or is that supposed to wait until a minor/major?

We can bump it whenever as long as it only affects experimental


support apiserver url rewrite

What type of PR is this?

/kind feature
What this PR does / why we need it:
Expose the binding-apiserver more kubernete.
Which issue(s) this PR fixes:
Fixes https://github.com/clusterpedia-io/clusterpedia/issues/589
Special notes for your reviewer:

Add command  --feature-gates=ApiServerURLRewrite=true to open the feature.
kubeconfig file's server: https://${binding-apiserver}:${binding-apiserver-port}/, example: https://<IP_ADDRESS>:30443/

Does this PR introduce a user-facing change?:

If /resources is still needed, I think it's not necessary to change it, and /apis/clusterpedia.io/v1beta1/resources is more standardized and easier to understand than /resources.
If you choose to remove the prefix, then clusterpedia-ip:port/apis/<group>/<resource> -> clusterpedia-ip:port/apis/clusterpedia.io/v1beta1/resources/apis/<group>/<resource>would be better.

If /resources is still needed, I think it's not necessary to change it, and /apis/clusterpedia.io/v1beta1/resources is more standardized and easier to understand than /resources.
If you choose to remove the prefix, then clusterpedia-ip:port/apis/<group>/<resource> -> clusterpedia-ip:port/apis/clusterpedia.io/v1beta1/resources/apis/<group>/<resource>would be better.

@Iceber I made some change, and remove /resources suffix.

@wzshiming The old version, I want to implement a general rewriter, it's too complex for us. So I did some refactor, it's easy to understand.

LGTM
/cc @Iceber


PLAT-8294 : supporting private cluster

Adding support for:

AKS private cluster with user managed identity
ACR private registry

example azure-main.tf to test the new features:
#########################################################################
########### Create Vnet and Subnet to test Private AKS and ACR ##########
#########################################################################
terraform {
  required_version = ">= 1.3.0"

  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 3.45"
    }

    random = {
      source  = "hashicorp/random"
      version = "~> 3.1"
    }
  }
}

provider "azurerm" {
  partner_id = "31912fbf-f6dd-5176-bffb-0a01e8ac71f2"
  features {}
}

variable "ipspace" {
  description = "CIDR block for AKS and ACR Vnet"
  type        = string
  default     = "<IP_ADDRESS>/16"
}

variable "address_prefixes" {
  description = "CIDR block for AKS and ACR Subnet"
  type        = list(string)
  default     = ["<IP_ADDRESS>/24"]
}
variable "tags" {
  type    = map(string)
  default = {
    environment = "production"
    department  = "engineering"
    project     = "azure-platform"
  }
}
# Create Vnet for AKS and ACR
resource "azurerm_virtual_network" "aks_vnet" {
  name                = "aks-ymi-private-vnet"
  location            = "westeurope"
  resource_group_name = "ymi-domino"
  address_space       = [var.ipspace]
  tags                = var.tags
}
# Create Subnet for AKS and ACR
resource "azurerm_subnet" "aks_subnet" {
  name                 = "aks-ymi-private-subnet"
  resource_group_name  = "ymi-domino"
  virtual_network_name = azurerm_virtual_network.aks_vnet.name
  address_prefixes     = var.address_prefixes
}
#########################################################################
##################### Domino Infrastructure #############################
#########################################################################
module "domino-aks" {
  source                              = "./terraform-azure-aks-acr"
  api_server_authorized_ip_ranges     = null
  resource_group                      = "ymi-domino"
  deploy_id                           = "ymi-private"
  kubeconfig_output_path              = "./config/config"
  kubernetes_version                  = "1.28"
  aks_subnet_name                     = "aks-ymi-private-subnet" # Required for private cluster or private registry. A pre-existing VNet and Subnet are necessary.
  aks_vnet_name                       = "aks-ymi-private-vnet"   # Required for private cluster or private registry. A pre-existing VNet and Subnet are necessary.
  aks_vnet_rg_name                    = "ymi-domino"             # Required for private cluster or private registry. A pre-existing VNet and Subnet are necessary.
  cni_overlay_enabled                 = true
  private_acr_enabled                 = false
  private_cluster_enabled             = true
  private_cluster_public_fqdn_enabled = false
  namespaces = {
    platform = "domino-platform"
    compute  = "domino-compute"
  }

  node_pools = {
    compute = {
      zones = ["1"]

      # counts are per zone
      initial_count = 3
    }
    gpu = {
      zones = []

      # counts are per zone
      min_count     = 0
      max_count     = 1
      initial_count = 0
    }
    platform = {
      zones = ["1"]

      # counts are per zone
      min_count     = 3
      max_count     = 6
      initial_count = 3
    }
    system = {
      zones = ["1"]

      # counts are per zone
      min_count     = 3
      max_count     = 6
      initial_count = 3
    }
  }
}

output "STORAGE_ACCOUNT_PRIMARY_ACCESS_KEY" {
  value     = module.domino-aks.storage_account.primary_access_key
  sensitive = true
}
output "STORAGE_ACCOUNT_NAME" {
  value = module.domino-aks.storage_account.name
}
output "STORAGE_ACCOUNT_PRIMARY_FILE_ENDPOINT" {
  value = module.domino-aks.storage_account.primary_file_endpoint
}
output "STORAGE_ACCOUNT_PRIMARY_CONNECTION_STRING" {
  value     = module.domino-aks.storage_account.primary_connection_string
  sensitive = true
}
output "STORAGE_ACCOUNT_BACKUPS_CONTAINER_NAME" {
  value = module.domino-aks.containers.backups.name
}
output "STORAGE_ACCOUNT_PROJECTS_CONTAINER_NAME" {
  value = module.domino-aks.containers.projects.name
}
output "CONTAINER_REGISTRY" {
  value = module.domino-aks.domino_acr.login_server
}
output "IMAGE_BUILD_WORKLOAD_IDENTITY" {
  value = true
}
output "IMAGE_BUILD_CLIENT_ID" {
  value = module.domino-aks.workload_identities.hephaestus.client_id
}

Tests conducted include:

Tested combinations
AKS
ACR

OK
Private
Private

OK
Public
Public

OK
Private
Public

OK
Public
Private

@yas51ne Looks good generally, but we definitely need to get these tests passing.

last execution worked, but it looks like this one failed because the terraform command not found on the ci/cd agent: https://app.circleci.com/pipelines/github/dominodatalab/terraform-azure-aks/408/workflows/63da1d6b-1edd-4c04-918f-82f3ec8e0479/jobs/635

@ddl-dclegg I pushed the fix, it should be fine now


Absolute local paths on Windows not recognized

Sorry if I am using it wrong or it's duplicate report.
Running lychee (lychee-v0.11.1-windows-x86_64) on a local absolute path on Windows gives the following error:
>lychee.exe "C:\asd"
Error: Network error

Caused by:
    0: builder error for url (c:\asd): URL scheme is not allowed
    1: URL scheme is not allowed

Running it from that directory with lychee.exe . works!

this indeed is a bug.
Windows path is technically URL and the lychee tries to parse the argument as URL before parse it as a file path. And in the case the drive is mistaken as a scheme.
A simple workaround is to change the said order. But it won't work because someone may name a drive as "http". so "http:\foo.bar\xyz" becomes both a legit Windows file path and a legit URL.
The true solution is:
Totally ban positional arguments. If you want to supply a file path, use --file, if you want to supply a glob, use --glob, etc.

Windows drive names can only be letters a-z, so http:\ would not be a valid Windows path. URLs would have to start with a double slash, which Windows paths don't (ignoring network drives like \\server\path\ for now...
But yeah, I agree that paths/URLs are a mess and it's best to explicitly distinguish them!

in my made-up example http:\foo.bar\xyz:

http is the drive name
\foo.bar\xyz is an absolute path

URLs would have to start with a schema and double slash

False. It doesn't have to contain double slash. Examples

<EMAIL_ADDRESS>foo:bar

Yes sorry, I was incorrect about the double slashes. However Windows doesn't really have drive names, only drive letters afaik.

okay after some research it turns out you're right.
on windows the drive letter must be one of A-Z.
(for example see https://learn.microsoft.com/en-us/windows-server/storage/disk-management/change-a-drive-letter)
So we can indeed guess whether a positional argument is a absolute path with drive on Windows.

Can we collect a few test cases and the expected outcome here?

we really should not abuse positional argument even though we can guess whether it's a file path or a URL.
I think in most cases people invoke lychee against specific files or a glob pattern, so the practical choice is to allow path and glob as the positional argument.
directly providing a URL to lychee is a niche case actually. it should either be done with a keyword argument or we simply remove this feature altogether.

FWIW, you can workaround this with using drive relative paths - which basically look like standard POSIX paths.
So, assuming the working directory is on the C: drive, you can use /Users/.... Windows is a lot more forgiving with paths than POSIX systems.

Summary
lychee fails to recognize absolute local paths on Windows, mistaking the drive letter for a URL scheme.
Example
lychee.exe "C:\Users\username\document.md"

Expected: lychee checks the file
Actual: Error: Network error (URL scheme is not allowed)
Proposed Fix

When parsing input, first check if the path starts with a single uppercase letter followed by a colon (e.g., "C:").
If it does, treat it as a Windows absolute path rather than attempting to parse it as a URL.

This approach will correctly handle Windows paths while still supporting URLs as inputs (which I use frequently). It might not be generic, but we haven't discovered a lot of edge-cases like this, so I think we should be pragmatic here.
If you'd like to implement this fix, please submit a pull request with these changes.


proposal: net: add API to override DNS servers

What version of Go are you using (go version)?
go version go1.8 linux/amd64
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/matteo/go"
GORACE=""
GOROOT="/usr/lib/go-1.8"
GOTOOLDIR="/usr/lib/go-1.8/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build344172046=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"

Feature request
It could be useful to set the DNS servers used for queries, both globally or in net.Lookup*
draft implementation: https://go-review.googlesource.com/37434

If we do this, why just the DNS servers? What about options? Perhaps an API to set the string contents of a /etc/resolv.conf file, which we already have a parser for?
/cc @mdempsky

This will lead to hard to discover bugs in DNS configuration which can not be observed from the outside of a binary. I expect this to lead to Go binaries getting a bad reputation among people operating systems with such binaries.
Adding environment variables to achieve these effects can be observed and discovered from the outside and can implement the same API via self exec with those environment variables set.

Perhaps an API to set the string contents of a /etc/resolv.conf file, which we already have a parser for?

I think this would be unfortunate, since /etc/resolv.conf is semi OS-specific. Also, some OSes use multiple files for config (e.g., gai.conf and nsswitch.conf on Linux).
I'd rather expose dnsConfig itself somehow, though I also worry that would limit our flexibility in supporting new OS-specific resolver behavior in the future.

Or just expose some basic info like the DNS addresses, and allow to replace them.
Actually there is no way in Go to do a DNS query using a custom DNS.
Even some argument in net.Lookup* or functions which allows this could be usefult too

Does the C library allow this? If so, how?

Adding a field to net.Resolver seems like the right place if we add something. The top-level Lookup funcs use DefaultResolver.

Does the C library allow this?

I don't see any functionality like this in glibc. If it exists, it's unlikely to be portable to other OSes.

Actually there is no way in Go to do a DNS query using a custom DNS.

But if there's no way in C either, then I'm not too worried. There already exist third-party DNS clients for Go. https://github.com/miekg/dns in particular is very good.
I think we know how we'd do this. What's missing so far is a strong justification for adding that API complexity. Why is this important to users? In what context does it make sense to override the DNS config in Go but not other languages, or in one program but not others? Why not just always override system-wide?

In C, you can change the set of name servers to query by calling res_init and then changing the nscount and nsaddr_list fields of the _res global variable declared in <resolv.h>.  This is not seriously documented, but programs do it, and books refer to it; e.g., the O'Reilly DNS and Bind book: http://docstore.mik.ua/orelly/networking_2ndEd/dns/ch15_02.htm .

So it could be done with something like:
// #include <resolv.h>
import "C"
...
net.DefaultResolver.PreferGo = false

C.res_init()
C.__res_state().nscount = 1
C.__res_state().nsaddr_list[0].sin_addr.s_addr = 0xDEDE43D0 // resolver1.opendns.com

net.LookupIP("example.com")

PreferGo = false doesn't do what you think. False is the default (zero) value. That boolean only prefers Go. It doesn't prefer C if false.

If we do implement this, let's make it force use of the pure Go resolver and not try to implement in C by scribbling over C library data structures.
What I wrote above is still true:
What's missing so far is a strong justification for adding that API complexity. Why is this important to users? In what context does it make sense to override the DNS config in Go but not other languages, or in one program but not others? Why not just always override system-wide?

@teknoraver That's not context. That's a restatement of the feature. It doesn't answer any of the questions in my previous two replies.

Still waiting on context. In addition to:

What's missing so far is a strong justification for adding that API complexity. Why is this important to users? In what context does it make sense to override the DNS config in Go but not other languages, or in one program but not others? Why not just always override system-wide?

I also wonder when that's appropriate but https://github.com/miekg/dns is not the answer instead.

I needed to do a DNS query to a custom server, I tought that changing the configured servers could be an option,
but maybe adding API to do lookup using a server is better

It sounds like this proposal is maybe a little too specific, but @bradfitz points out pending CL https://go-review.googlesource.com/c/37260 that would enable this and some other kinds of overrides. Maybe that CL should be turned into a separate proposal issue and this one closed?

ok I agree with the custom Dialer

Declining because (1) there doesn't seem to be a compelling use case and (2) apparently #19910 will be good enough.

Hey guys, I know this issue is closed but I'm having a hard time figuring out how #19910 helps with this.
I am trying to do the following.
func GoogleDNSDialer(ctx context.Context, network, address string) (net.Conn, error) {
	d := net.Dialer{}
	return d.DialContext(ctx, "udp", "<IP_ADDRESS>:53")
}

r := net.Resolver{
	Dial: GoogleDNSDialer,
}
ctx := context.Background()
ipaddr, err := r.LookupIPAddr(ctx, "www.example.com")
if err != nil {
	panic(err)
}
fmt.Println("DNS Result", ipaddr)

Yet r.LookupIPAddr isn't using the custom dialer and is still using the default resolver from resolvconf.

@artooro We don't use the issue tracker for questions, especially not on closed bugs.  Please use a forum. See https://golang.org/wiki/Questions .  Thanks.
When I try setting the Dial field in net.Resolver, it is used.  When you ask on the forum, please provide a complete example.

@anlancetaylor sorry will do that going forward. But just in case anyone searches and finds this, turns out all I had to do was set PreferGo to true making the code:
r := net.Resolver{
	PreferGo: true,
	Dial: GoogleDNSDialer,
}

It wasn't obvious from the docs that PreferGo needed to be set in order for Dial to be used.


reqwest::blocking should advertise that it doesn't like tokio

This bug was extremely hard to track down. I was wondering why my tokio runtime was failing even when spawned on separate thread. Note that I do know that running blocking tasks on tokio isn't a good idea. But I was trying to slowly migrate from blocking to non-blocking and this was interim state.
What would be great is

the documentation should explicitly state that instantiating client::blocking inside tokio ends up with fireworks
reqwest::blocking::Client should actually use tokio's enter(false) to check for runtime-inside-runtime and at least should fatal early on (e.g. something like "You should not run reqwest::blocking inside existing tokio runtime")

The smallest repro is
use reqwest;
use tokio;

#[tokio::main(flavor = "current_thread")]
async fn worker() {
    println!("worker started!");
    let client = reqwest::blocking::Client::new();
    println!("worker ended");
}

pub fn main() {
    worker();
}

Running this fails with
worker started!
thread 'main' panicked at 'Cannot drop a runtime in a context where blocking is not allowed. This happens when a runtime is dropped from within an asynchronous context.', /home/ppershing/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.4.0/src/runtime/blocking/shutdown.rs:51:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

which isn't  helpful at all if it happens inside larger codebase

Good point! reqwest does try to explicitly blowup early, by checking if it can create a runtime as a debug assertion. But it seems the panic message has changed, and so it's less clear. It would be a good improvement to add a note to the docs, and see if enter or similar can give us a better panic message.

I was using Rocket, and some of the non-async endpoints use the blocking client to contact another API.
When I was using this version of  reqwest = { version = "0.11.0" } I get a runtime crash. However the same code would run if the reqwest version is v0.10.10
In the change notes the tokio version was updated to version 1
@seanmonstar Is this runtime assertion intentional?
Meaning using a blocking client, on a rocket server for non-async endpoints was unsafe ( and may randomly crash ), so even though it worked in 0.10.10 my implementation was unsound?

Got the same issue while migrating from reqwest::blocking::Client to reqwest::Client. I was building the asynchronous method alongside the synchronous implementation, thus importing and implementing both clients in the scope at the same time.
Removing either one of the clients fixed it for me.

This also happened to me today. only found the error with the help of trusty RUST_BACKTRACE.
Issue came from another library crate of mine where i used the blocking version of reqwest.
without backtrace it just shows this atm:
thread 'main' panicked at C:\Users\user\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tokio-1.33.0\src\runtime\blocking\shutdown.rs:51:21: Cannot drop a runtime in a context where blocking is not allowed. This happens when a runtime is dropped from within an asynchronous context. note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

I just ran into this when trying to leverage the prometheus rust crate's push-metrics support.  push-metrics loads in reqwest in blocking mode as a dependency.  Was surprisingly difficult to track this down.


🐛 Fixed the scroll problem using safari on low resolutions smartphones

closes #9494 issue
-Modified the content_list css class
It's my first PR here. You can find the use-case in posts list (admin panel), where the problem was reported in the issue.

Coverage remained the same at 70.651% when pulling 7bee5b8211bfe19c7b6b50270ac8ab3ecd747760 on guisouzabr:bugfix/9494/adminPanelScroll into c6554a755b54e23de7377896c0fb38a78364bf2d on TryGhost:master.

@guisouzabr have you tested this with enough posts to trigger infinite scroll? I believe the scroll behaviour needs to be fixed on .gh-main for infinite scroll to work.

@guisouzabr have you tested this with enough posts to trigger infinite scroll? I believe the scroll behaviour needs to be fixed on .gh-main for infinite scroll to work.

hi @kevinansfield, how many posts i need to create to trigger the infinite scroll? I tried with 31 posts and everything worked fine.
Thanks!


when using setValue(propName, array) on a list, the array is concatenated to the array object in the form

As the subject describes.
For example:
formInstance.getValue("listExample"); // [1,2,3]
formInstance.setValue("listExample", [4,5,6]);
formInstance.getValue("listExample"); // [1,2,3,4,5,6] --> should be [4,5,6]

Unresolved, closing this to clear backlog


Usage Example

This is exactly the function I was looking for!
However, it's unfortunate that the lack of concrete usage examples makes it difficult to grasp the function at a glance.
To make it easier for more people to use, I'd like to sharing some relevant information.
Installation : Install via the Custom Node Manager in ComfyUI-Manager.
Screenshot

Would it be okay if I send a PR for the README.md?

PR is welcome.

I'm so glad it merged!


camel-quarkus-paho: Add reflection config for RandomAccessFile

follows up https://github.com/apache/camel-quarkus/pull/3681

@zhfeng I'm thinking that this may be useful to have it backported in 2.7x branch too ? Would you like to do, or maybe I proceed ?

yeah, I will take care of the backporing to 2.7.x

backport PR https://github.com/apache/camel-quarkus/pull/3700


Directories are created when the flags are off

I am calling setTdlibParameters method with parameters:
use_secret_chats: false
use_file_database: false
use_message_database: false
use_chat_info_database: false
enable_storage_optimizer: false

but directories are created even though they are not needed.
List of directories:
animations
documents
music
notification_sounds
passport
photos
profile_photos
secret
secret_thumbnails
stickers
td.binlog
temp
thumbnails
video_notes
videos
voice
wallpapers

Directories are needed to store downloaded files.

I understand, but in the client options I specify that I will not store files and these directories are not needed.

No. You specified that you don't need file database, i.e. files will be redownloaded again after each app restart. Apps still need to download files regardless of whether a database is used.

But I don't need the files in the app at all

File downlaoding is basic functionality and there is no way to disable it.

Very strange. Why do I need extra directories if I don't need them?

The content of database_directory is managed by TDLib. It can store there whatever files needed for execution.

I understand. Then I will fork for people

Completely unrelated to this issue, but file directories are created now only when the first file is downloaded to them.


colab

hi! i see noble & good goals in your project,
(it just is a lot of work and growing too slowly next to ImprovedTube and others.
i.e. why not colab or chose something unique?)
many smiles
(mini map from ImprovedTube? ^^ )

growing too slowly

I confess I was somewhat udevlen, so low popularity. But in time I became indifferent. The extension was originally created for personal use. And I have implemented everything that I personally need. The goal is achieved.

colab or chose something unique

I don't see how I can help. I have seen your invitation. But I think it's better to have several developers who actually do something. Than the floor is a hundred useless. Who do nothing and only endanger the project.
You can take any part of my extension if you like. I can explain to you if something is not clear.
I took a quick look at your code. And everything is implemented very similarly.
the only thing I think is weak in your extension is the implementation:
https://github.com/code4charity/YouTube-Extension/blob/91578835a63831b7e1c8dd7fdf501559fc236dd0/youtube-scripts.js#L2071
It seems to me that this is easier for me:
https://github.com/raingart/New-Horizons-for-YouTube-extension/blob/master/plugins/other/default-tab.js
I will note that your extension is much better for porting to GM script (Violentmonkey etc.)
Also, localization into other languages is very easy for you to release, unlike my version.
After the death of Iridium, your extension remains the largest open source ever. Yielding only: Enhancer for YouTube™ and Magic Actions for YouTube™ despite the fact that their opportunities are much poorer. The question is why? Design or association with "magic". Who knows.
I can advise you to try to expand your audience by adapting you ext. for: openuserjs.org and greasyfork.org
Btw. If you want to get inspiration and further increase the functionality, then you can search here:
https://greasyfork.org/en/scripts/by-site/youtube.com?sort=updated
Personally, I like the architecture of this script. Code and architecture looks clean and pretty.

mini map from ImprovedTube?

yep. The idea of filtering by visual blocks seemed to me convenient. But it turned out that most of the plugins are only in the "Player" section. And in general, I consider such a solution to be colored in terms of functionally useless.


Ammo performance improvements

Basic set of Ammo perf improvements, as per #15.
One slight hesitation about this is that people who have used previous versions of aframe-physics-system, and disregarded the rules about not moving static entities could have bugs exposed by moving to this version.
When we publish the version containing tis fix, we should add a note to the release note about that.
I don't think it's worth preserving the old behaviour with a flag, because the old behaviour is bugged, and I don't want to have to preserve bugged behaviour forever.

On my PC, I'm seeing median tick "before" perf reduce from ~1.5msecs to ~0.5msecs with these fixes.
Overall median tick reduces from ~3.5msecs to ~2.5 msecs.

Weird, why don't I see the syncToPhysics() function body here? Was it added previously?

Not sure where you are looking...
It's here:
https://github.com/c-frame/aframe-physics-system/blob/78290ee312bf0b7616942ec966203e3b42670c18/src/components/body/ammo-body.js#L373

we could leave in some kind of .error() check for an attempt to move a static body being caught, with an explanation that they should change it to a kinematic body?

I don't see how to do this efficiently.
Inefficient options I can see are:

check latest position vs. previous position every tick.  But that means checking every static object every tick.
listen for the componentchanged event on a static object, in case the position component is updated.  But (a) that won't detect position changes made direct to the Object3D (which is the recommended way to update position) and (b) it requires code that executes every time any component on any static object changes.


enhance the technology stack in readme.md file

I want to enhance the technology stack similar to this. Please assign this task to me.

With the new Readme, this section is update to this:

@Amulya-B28, do have a look.

@akbatra567 Thank you for letting me know....but i would like to add logos for it


French language support!

Support de la langue française pour l'extension 'i18n Ally' de VSCode.

Hey! I made the first French translation for your extension. I hope you'll use it!

Merci beaucoup!

Released in v1.10.2 🚀


Fix controller upgrade process crash

Fixes various edge cases that caused the recreation of the node container to fail after an image update

https://github.com/hyperledger/indy-node-container/pull/124#issuecomment-1424372944 should hopefully fix the problem with the tests


[New game]: hold the cloud

🎮 Game Request
HTML5 & Javascript game inspired on the exhaled nitric oxide medical test for asthmatics consisting to blow in order to maintain a cloud between a delimited strips for a period of time.
Point down the features
Game points will beawarded on basis of time taken
Select program in which you are contributing
GSSoC23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @S-ishita !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

Hey @S-ishita ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


"not a constructor" error: DragPan, PinchZoom, TileDebug

In version 5.1.2 from v5.1.2-dist.zip
ol.interaction.DragPan()
gives an error message:  TypeError: ol.interaction.DragPan is not a constructor
Same problem with ol.interaction.PinchZoom() and ol.source.TileDebug().
All of them are working fine with 5.0.x.

Thanks for the report. This is an issue with the full build only, the ol package works fine. I'm going to fix the issue now.

Thanks for the reports.  The debug build is clearly broken right now.  Please do not try to use https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.1.2/build/ol.js or the ol.js build in the release archive.
Using the library with a module bundler works.  If you are able to move to a module bundler, please do.  For inspiration, see ol-parcel, ol-webpack, or ol-rollup.  I just confirmed that all three work with the 5.1.2 release.  I recognize that none of this is particularly helpful to beginners.  Contributions to improve the documentation are welcome.
We'll put out another release with a fixed version of the legacy full build.

v5.1.3 works! :-)


Drones get stuck on Track 6

Also, on the same track, an opponent car get stucked on the left-buttom curve.

@Soulman38 AI has been adjusted to turn the left bottom curve a little less tight than before:


Issue in having 400+ rows in uitableview cell

i have uitableview of around 400+ rows, in which i download user avatar, the problem is if there is no cache and user scrolls too fast, when user reaches bottom cells, the images will start randomizing until the last cell, and after that its fine, i have canceled download tasks , will display , did end display all are implemented, i am not sure what is missing or problem here. i am sure, i must be doing something wrong, can you please have a look ?

What are you doing to cancel the download task? I would suggest some identical thing like this: https://github.com/onevcat/Kingfisher/blob/master/Demo/Demo/Kingfisher-Demo/ViewControllers/NormalLoadingViewController.swift#L44-L51
It would be nice if you can paste some code snippet of exactly what you are doing, so I can help more.

i took help from this example you pasted.
public func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        let item = viewModel.itemAtIndex(with: indexPath.row, section: indexPath.section)
    (cell as? ContactListingForSingleChatTableViewCell)!.startDownload(with: item)
}
public func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    (cell as? ContactListingForSingleChatTableViewCell)!.cancelDownload()
    /*
    if let cell = tableView.cellForRow(at: indexPath) as? ContactListingForSingleChatTableViewCell {

    }
    */
}

https://user-images.githubusercontent.com/528785/145159985-11a4cd38-e244-4263-8554-96472587f179.mov
Please check the video

What the content of startDownload and cancelDownload? Or in other word, how are you using Kingfisher to set an image and how you cancel it?

`func setImageWithKF(with url: String, placeHolderImage: UIImage? = nil, backgroundColor: UIColor? = .clear, option: KingfisherOptionsInfo? = nil, contentMode: UIView.ContentMode = .scaleAspectFit) {
self.contentMode = .center
if placeHolderImage != nil {
self.image = placeHolderImage
}
if backgroundColor != nil {
self.backgroundColor = backgroundColor
}
guard let imageUrl = URL(string: url), url.count > 0 else {
return
}
        let resource = ImageResource(downloadURL: imageUrl)

        KingfisherManager.shared.retrieveImage(with: resource, options: option, progressBlock: nil) { result in
            switch result {
            case .success(let value):
                self.contentMode = contentMode
                self.image = value.image
            case .failure(let _):
                break
            }
        }
}`

The KingfisherManager does not link your image view to its state, so you cannot cancel it by the image view kf extension.
I suggest if there is no special reason, you should always choose the image view extension methods to set the image:
imageView.kf.setImage(with: url)

ok, i will use kf then, many thanks for guidance.


write something in the log

in the console.log leave a message for developers.

wait for next update


Problems with Waters MSe raw data in showing precursor m/z and precursorIntensity after converted to mzXML

Hi,
After converting the Waters MSe raw data (LC-Q-TOF) to mzXML, some information may be wrong, see the following:
<scan num="5"
          scanType="Full"
          centroided="1"
          msLevel="2"
          peaksCount="146"
          polarity="+"
          retentionTime="PT62.454S"
          collisionEnergy="20.0"
          basePeakMz="96.962128"
          basePeakIntensity="22262.0"
          totIonCurrent="6.55044e05"
          msInstrumentID="1">
      <precursorMz precursorIntensity="0" activationMethod="HCD" windowWideness="1150.0">625.0</precursorMz>
      <peaks compressionType="zlib"
             compressedLen="1173"
             precision="64"
             byteOrder="network"
             contentType="m/z-int">eJwt1X9Q03UYB/A5oVsFah2alXJAZnedXGYkkMzGWHdWVy5BzojJBmqZpPzwBxAYDo+MHzpiR5mAY7/6wkA2EFjIJmwIJtoFIppSLY7rh4ZxVBfnIdXez/PXc697Pp/n83ye73ffyV7/Z7RYJBLJ+tL9QSTbEhfi88erf8rgRHkl8p63RPBWaQnyA3c/h5M33jL4oymZ8smFMYjNv7K9Zb3+OLTOA28LXA/bkii/TVqN+tdcJ8iHH5TBqxPJri1Y31jB693zYTg/Mhx+e0M33PdVLtlbSucraH2K4hjyrdxPytF41Hfmkt/xjCBvTyWnvhyI+9husovsWH9+gt3jhC16tjcP+wd/W0K+Hw075JRXLbyOedm5H5X0C9zHEfEeeWOh2h/bXTRPVYId87A9G0BWFKCeWXqf7N6D9cJZqrddKoFNe9nxVxAt6eQ0cQnyxvfZsTvRT8cdtjsY55leIqvFSxFd/LzVT05jHh1mdvgMYtccW74M8xCa2SoTfGaandaG/UIeu+gS3FrArp3B+r7bPeTxL9GvmeetEbVifRP3rylSwRbuR+P6HvM0BLAnVIhnq8jpYj3qO4rY8lPYbxxlpy2Hba+x00PpvDfZhn7EUTcuKMsQB+B5WA9TPsOQAjvb2cZJzLOF75fhDcb559tk5PlXEdvWUH6Hdgr9e5NcZONmuOFbyu88VYf49SPs01moLxSyz13H+YKM7clH/+3czy7xd4gWCVv1BPox8fN6V+PDfvcgWzsF9x0tJtdJsN4wwnnfQz7U4/ntDi9FP1eCR8nx1M9JO+e9CvTTH0Hv9+6fQnA/Rw7l9xg7UL95NTlTe1Htj0Yjed9CAecJPO+s+FtwzUX2kV7Ut3azW2fRj/UeOVvzF84T+PeRnY0XQdbVw9aNIe+JWk82/Ejz5+9BTvi/1K9jLVkei/uZdJTPlYfhvHMrqO7+fYU0HyXlDyiVWN+UKIYPPv8M7ussHSbHh2K/4TKtPzhswn7HAnpP8vQXkLfx9y9v5lHU00+S8xcP4v70mv7v6Rrk63aQC4Zz0L9V/BH8Yc5TiHof5Yvz5ajfOHkNPhInwfndh9aQFYvRr+XqFHluGZ7Pp0tovzZoFeJQeAQ55DnU6/w7mrwiAfU6U2LJq5RwQwzvLxShflUQu2I56lv596MdT0C91nVR5EklXPcA3UN7Z47uETdE/j2T9m+YhUtSo1G/mn8vH4/exP5qJ/mTqRHMR8/9lC0Kgit72aparK/JZH9QS/Xi2C03MP8qnkeZawbnO3sOkC/8gfUtK4+Tv5GgfkvQPHnsYcQTMt7/QyTWN/D3rOxnKeJJNbk8cgDzM2x/gfxiD+rpfJyXDuD8dnMb+ZVJ1Gvq30t+4xLWm12byFvHUK/yGO8/HojYPF1OrnkM97fubyTXP44odN0gW6axv2KtmmzdjPOqBqzkliZE3WWBfEZB88u4S+7MRf0K/l6Uu/qRr+H/y4rgCdS3tU2Ql86G+ePppAXklfV0XrKOHLoI9zcLTvLTPuTrx7le5C/wZ8XsXTGoV5VF1t0rwv6yqHq//wN2ixjz</peaks>
    </scan>

In the line "625.0", precursorIntensity="0" and m/z is always the same ( 625.0) in the whole file.
In DDA mode, the m/z is different, however, the precursorIntensity also equal zero.
I want to know:

if maconvert support MSe raw data of Waters;
is it normal that precursorIntensity="0" and the m/z always the same in the converted mzXML file (MSe mode)?

Thanks!

Yes, that's normal. MS^e is fragmenting the entire m/z range so for a single precursor m/z we just pick the middle. With mzML you would see that the isolation window lower and upper offsets cover the entire range. And obviously with such a large range, the concept of precursor intensity is meaningless. Although even for DDA Waters data I don't think we fill in precursor intensity. Only some vendors provide that or a relatively easy way to calculate it.


feat(routes/rtf/html): add rtf-to-html route

closes #59

Pull Request Test Coverage Report for Build 874721449

55 of 56 (98.21%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.1%) to 97.343%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/routes/rtf/html/index.js
17
18
94.44%

Totals

Change from base Build 874507435:
-0.1%

Covered Lines:
308

Relevant Lines:
313

💛  - Coveralls

Pull Request Test Coverage Report for Build 874721449

-1 of 56 (98.21%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.1%) to 97.343%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/routes/rtf/html/index.js
17
18
94.44%

Totals

Change from base Build 874507435:
-0.1%

Covered Lines:
308

Relevant Lines:
313

💛  - Coveralls

Pull Request Test Coverage Report for Build 874721449
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

55 of 56 (98.21%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.1%) to 97.343%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/routes/rtf/html/index.js
17
18
94.44%

Totals

Change from base Build 874507435:
-0.1%

Covered Lines:
308

Relevant Lines:
313

💛  - Coveralls


replace some links on Twilio user guide

These were removed in https://github.com/mulesoft/docs-connectors/pull/165 but after discussing with George I've decided to restore them.


Adding check for exp to be ready and preview

Hi,
Segment is doing wrong tracking as it not checking for experiment to be ready. Also, it is sending data in VWO preview mode also.

👁 @hankim813 @tsholmes for review

@hemkaran thanks for the PR! Could you add a unit test for the new if guard?
Also looks like circle failed due to lint errors

Codecov Report

Merging #8 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff          @@
##           master     #8   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           1      1
  Lines          54     56    +2
=====================================
+ Hits           54     56    +2

Impacted Files
Coverage Δ

lib/index.js
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

@hankim813 Can you please review now?

@hankim813 Can you please release it? One VWO client is waiting for the fix.

@hemkaran deployed! thanks for the PR!

@hankim813 Thanks. Checked it, working perfectly fine.


[Inference] Set do_sample=False disrupt the generation

I tried to output the same voice for consistency, so I set the do_sample=False. However, the output is basically noise. Here is my code:
prompt = "It took me quite a long time to develop a voice, and now that I have it I'm not going to be silent."
description = "A female speaker delivers her words quite expressively, in a very confined sounding environment with clear audio quality."
input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)
generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids, max_length=2580, num_beams=1, num_beam_groups=1, do_sample=False)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parle_tts_marco.wav", audio_arr, model.config.sampling_rate)

Did this work for you, @elricwan ?

No, it doesn't work for me
On Sat, 17 Aug 2024 at 15:25, Akash Gupta @.***> wrote:

Did this work for you, @elricwan https://github.com/elricwan ?
—
Reply to this email directly, view it on GitHub
https://github.com/huggingface/parler-tts/issues/45#issuecomment-2294874240,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AH624AY6KG7WFMPBN4FELHLZR5MOBAVCNFSM6AAAAABHQ5B3HGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJUHA3TIMRUGA
.
You are receiving this because you were mentioned.Message ID:
@.***>


igb driver not recognized by XDP

I have managed to run XDP in generic mode, however, it should run in native mode since igb driver should be supported.
Driver:
lspci
01:00.0 Ethernet controller: Intel Corporation 82580 Gigabit Network Connection (rev 01)
01:00.1 Ethernet controller: Intel Corporation 82580 Gigabit Network Connection (rev 01)

find /sys | grep drivers.*01:00
/sys/bus/platform/drivers/ipmi_si/IPI0001:00
/sys/bus/pci/drivers/igb/0000:01:00.0
/sys/bus/pci/drivers/igb/0000:01:00.1

After service xdpfw restart
Nov 23 15:17:31 hp1007 systemd[1]: Started XDP Firewall tool..
Nov 23 15:17:33 hp1007 xdpfw[7774]: libbpf: Kernel error message: underlying driver does not support XDP in native mode
Nov 23 15:17:33 hp1007 xdpfw[7774]: Could not attach with DRV/native mode (Operation not supported)(-95).
Nov 23 15:17:34 hp1007 xdpfw[7774]: Loaded XDP program in SKB/generic mode.

Hey @sleek-geek, can you confirm you are running kernel 5.10 or higher? You can find the kernel version by running uname -r.
Thank you!

Hey @gamemann Forgot to add it.
uname -r
5.4.0-72-generic

Hey @sleek-geek, no worries!
IGB XDP DRV support was added in kernel 5.10 or above.
You can use the following methods to install 5.10 or higher!

Install 5.10 or higher using the OS's package system such as apt or yum (sometimes you need to find backports).
Build the kernel from source.
For Ubuntu, install the latest mainline kernel using the following commands as root (this is what I usually do, but keep in mind these are the latest mainline kernels which could introduce bugs).

apt install wget
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
chmod +x ubuntu-mainline-kernel.sh
sudo mv ubuntu-mainline-kernel.sh /usr/local/bin/

I hope the above helps and thank you!

Hey @sleek-geek, I'm going to close this issue for now since your issue is related to the kernel version.
If you need any more help, please let me know!


[BUG]: Saving Model from Model Edit is super difficult

Scenario: Model edit
Step: 5
Link to the project: https://app.staging.terarium.ai/projects/c5a3cb4b-7a37-4037-9f7b-f893cf206e6a/workflow/947fe5c6-a918-4d7c-88c5-c50d0e7e7bc7?operator=be85ed07-9058-4a05-905f-94466b49f6b7

Tasks asks the user to save the model, save option is well hidden, might as well not exist.

Dealt with some UX improvments


Proposal: dynamic appends

Hi!
I ran into the issue with appends. When you use the appends property and set it hard coded in the model, every time the model is booted, the attributes of the appends will be casted. Sometimes you want to use a property of a model in a getExampleAttribute method. If that property isn't loaded, it is not required to load the property. This will cause a null result.
Sorry for the bad explanation, i've added 2 txt files as a example.
original.txt
Dynamic appends.txt

Hi there,
Welcome to Laravel and we are glad to have you as part of the community.
Unfortunately this GitHub area is not for ideas, suggestions etc. This is only for issues/bugs with the framework code itself.
I will be closing your ticket here. You are able to open a ticket at https://github.com/laravel/ideas
Alternatively you are able to open a PR using the Contributions guidelines: https://laravel.com/docs/5.7/contributions#which-branch
If you feel I've closed this issue in error, please provide more information about how this is a framework issue, and I'll reopen the ticket.
Thanks in advance.

@laurencei you maybe want to update that url there to https://laravel.com/docs/contributions#which-branch so it always goes to the current release :)

@driesvints - thanks - updated my saved reply for future ones :)


Support patch operation "set"

Summary
https://learn.microsoft.com/en-us/azure/cosmos-db/partial-document-update
The patch operation in CosmoDB supports a few more operations than JSON Patch (RFC-6902), such as "set".
Steps to reproduce
container
  .item('some-id', 'some-id')
  .patch({
    operations: [
      { op: 'set', path: '/some-array/0', value: 'Hello, World!' }
    ]
  });

Expected behavior
It should not throw "invalid operation" error.
Observed behavior (that appears unintentional)
It throws "invalid operation" error.
Possible fixes
May need to extend the JSON Patch library, use another one, or intercept the call and perform the work manually.

Thanks for reporting, I've added support for 'set' and 'incr' operations.
This will be included in v0.1.12 release


pasteimage.path do not support  space(%20)

maybe need urlencode

Hello, you can update vscode-paste-image to v1.0.1 to fix this issue.


Apply carriedVelocity unless substantially different

On iOS the carriedVelocity (if it should be retained) is always added when a drag is ended. This can cause the unexpected behaviour of the scrollview speeding up after a fling, something that is not the expected behaviour in a native iOS app. This PR seeks to fix this issue by adding a check that the incoming velocity is larger than a factor of the carried velocity before applying it.
Attached two videos show the before and after behaviour
https://user-images.githubusercontent.com/1550685/113015889-3f5e8d00-917e-11eb-92be-6f8d2278c714.mp4
https://user-images.githubusercontent.com/1550685/113015759-2655dc00-917e-11eb-8a7a-0e3df19b28e6.mp4
Related Issues
Fixes #77043
Fixes #79277
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt.
[x] All existing and new tests are passing.

I intend to add a test for this as well, but I wanted to get some feedback on the suggested solution first, seeing as this is my first contribution to flutter.

Added the final changes you suggested. Let me know if you have any further comments. Thanks for the review.

Awesome work, thanks!!


filter destinations using sourceNamespace (#51936)

Please provide a description of this PR:
Filter destinations when route has sourceNamespaces matcher
To help us figure out who should review this PR, please put an X in all the areas that this PR affects.

[ ] Ambient
[ ] Configuration Infrastructure
[ ] Docs
[ ] Dual Stack
[ ] Installation
[x] Networking
[x] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
[ ] Upgrade
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Control Plane Revisions

Please check any characteristics that apply to this pull request.

[ ] Does not have any user-facing changes. This may include CLI changes, API changes, behavior changes, performance improvements, etc.

Hi @Ferdudas97. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test label.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

/ok-to-test

@Ferdudas97: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
b951aa172334faf3bf6ac297d8063a7449b9f84b
link
true
/test gencheck

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@Ferdudas97: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
b951aa172334faf3bf6ac297d8063a7449b9f84b
link
true
/test gencheck

lint_istio
b951aa172334faf3bf6ac297d8063a7449b9f84b
link
true
/test lint

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Hey, @ramaraochavali can you make a review of it?

Extremely sorry. I missed the notification some how

@Ferdudas97: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test gencheck

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@Ferdudas97: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test gencheck

lint_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test lint

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@Ferdudas97: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test gencheck

lint_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test lint

unit-tests-arm64_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@Ferdudas97: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

gencheck_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test gencheck

lint_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test lint

unit-tests-arm64_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test unit-tests-arm64

unit-tests_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@Ferdudas97: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests_istio
f769bf939560e94f94b3b6cd8d347a264bd72369
link
true
/test unit-tests

unit-tests-arm64_istio
9ed307827cfe6c9bf247b9e7fa52fc39f1c39082
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@Ferdudas97: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
9ed307827cfe6c9bf247b9e7fa52fc39f1c39082
link
true
/test unit-tests-arm64

unit-tests_istio
9ed307827cfe6c9bf247b9e7fa52fc39f1c39082
link
true
/test unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/retest

@Ferdudas97: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests_istio
9ed307827cfe6c9bf247b9e7fa52fc39f1c39082
link
true
/test unit-tests

unit-tests-arm64_istio
9ed307827cfe6c9bf247b9e7fa52fc39f1c39082
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@Ferdudas97: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
9ed307827cfe6c9bf247b9e7fa52fc39f1c39082
link
true
/test unit-tests-arm64

unit-tests_istio
9ed307827cfe6c9bf247b9e7fa52fc39f1c39082
link
true
/test unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.


Submission of credentials to external systems

This issue discusses the handling of system credentials, required to access external systems such as the data catalog.
Problem description
Currently, the flow is that system credentials are stored to vault directly (by a human user or by the sample GUI) using root access to vault. Any component that needs to read these credentials (such as connectors) read them directly from vault, again using privileged access. This issue proposes an alternative to enable a more secure solution that is both natural to Kubernetes users (that use kubectl) and that a managed UX can build upon.
Proposal
Scope

Excluding dataset credentials (to be addressed by another issue)
Excluding system credentials provided by the administrator (e.g., for the vault connector)
The user actor is tied to a M4DApplication resource. We do not distinguish the deployer of a workload from a data user. The M4DApplication abstraction is flexible enough to capture both cases. Work needed to properly support data users in different scenarios (beyond the abstraction itself) is out of scope.
A managed stack (specific connectors and UI that work together) may choose to use a different method than what is proposed here. We can't and don't really want to force it if the managed stack has a better way to achieve the same (in its own env).

New stuff
A Kubernetes Secret resource should be created by the user, holding the relevant system credentials:
apiVersion: v1
data:
  <system-name>: <system specific credentials>
  <system-name>: <system specific credentials>
kind: Secret
metadata:
  name: <any name the user chooses>
  namespace: <the same namespace as the M4DApplication>
type: Opaque

Both <system-name> and <system specific credentials> should be filled according to the documentation of the connector(s) in use. name can be the same as the M4DApplication but we don't force it (e.g., to allow multiple  M4DApplication resources in the same namespace to refer to the same secret).
The M4DApplication structure would change to hold an optional reference to the secret:
apiVersion: app.m4d.ibm.com/v1alpha1
kind: M4DApplication
metadata:
  name: <any name the user chooses>
  namespace: <the same namespace as the Secret>
spec:
  credentials: <the same name as the Secret>
...

The pkg/security/credentials/system package will include functions:

SetSystemCredentials that internally creates and applies a Secret object and sets it in the M4DApplication:func SetSystemCredentials(namespace, name string, credentials map[string]string) error

GetSystemCredentials that reads the system credentials for a specific M4DApplication and a specific target system:func GetSystemCredentials(namespace, name, systemName string) error

Fields namespace and name are of the M4DApplication. The implementation of SetSystemCredentials is simplified to save the secret using the same name as the M4DApplication, but GetSystemCredentials does not assume that.
Note that these calls won't work without proper RBAC (SetSystemCredentials for write secrets in the user namespace, GetSystemCredentials for read secrets from the user namespace).
Integration

Add system credentials to Egeria connector (none of the connectors in /connectors currently accept user provided credentials. We should investigate whether the Egeria connector needs this and if so use it as an example)
Add documentation for system credentials as part of connectors docs
Add documentation for system credentials as part of M4DApplication submission
The manager component to use GetSystemCredentials. Requires ClusterRole for manager to read secrets (already has it).
The sample GUI to internally use SetSystemCredentials and GetSystemCredentials. Requires Role for GUI to read/write secrets in user namespace.
(Future) cli to internally to use SetSystemCredentials and GetSystemCredentials.

For reading by connectors we have two options to choose from ACTION REQUIRED:

Connectors will internally use GetSystemCredentials. For non go connectors a sidecar exposing this call through grpc/rest will be provided (localhost access). Requires ClusterRole for connectors to read secrets.
A sidecar to manager will expose a grpc/rest server exposing GetSystemCredentials (only accessible by the connectors, similar to https://github.com/IBM/the-mesh-for-data/issues/57).

Compatibility

Compatibility with the existing method to read/write system credentials is not preserved. All code must change to use the new GetSystemCredentials/SetSystemCredentials.
Future changes:  If the implementation of GetSystemCredentials/SetSystemCredentials changes to use something different than a Secret, then it should be transparent to existing components and should not break existing user deployments. The changed implementation must preserve the existing functionality in GetSystemCredentials if a secret is detected (until deprecation period is over). Sidecars are updated with control plane / connectors upgrades. After deprecation period usage error should indicate that an upgrade might be needed.

Alternatives considered
Using Vault

User stores system credentials to the internal Vault instance. Would require setting up Vault upfront with the users base to allow them to login and interact with their own space within Vault (tied to control plane, M4DApplication, and user) which seems difficult to achieve for a Kubernetes user base.
User stores system credentials by sending them to a service installed to a namespace that they can access and port-forward to. The service stores the credentials to Vault to its own space within vault (achieved using dynamic policies and tying to the ServiceAccount of the service). An awkward flow that is also not really natural to Kubernetes users.
User submits M4DApplication via a managed environment that is user-aware. The system stores the credentials to Vault under a user-specific prefix. A role is created for each connector to be able to read these credentials. This can be implemented using the sample managed environment using dynamic rules in Vault. Seems impossible to implement without requiring a managed environment.

M4D Sealed secrets
Implement a new M4DSealedSecret CRD that stores encrypted data.
The goal is lowering the exposure of the credentials so that they can't be seen by other users that have Kubernetes access to the same namespace. Depending on the implementation, possibly also adds some protection against Kubernetes administrators.
Similar to sealed-secrets, the control plane holds an RSA keypair and a new cli tool (m4dctl) allows creating encrypted secrets that only the control plane can read. Unlike sealed-secrets there is no automatic conversion to regular Secret resources since this is the opposite of what we try to achieve.
Can be a future project external to M4D.
Secret to Vault operator
Monitors Secret resources that has a specific label. For a mathed Secret resource, a the controller copies the data within the Secret to Vault. Finally, it removes the Secret resource.
This limits the time window that the Secret can be viewed by other users that has access to it. However, the removal phase is a bit intrusive and might even cause problems when the Secret is deployed as part of a larger deployment (e.g., by Razee or Helm). The flow is a bit too complex and without extra benefits if the removal phase is not part of it.

@roee88 Looks fine to me.  What is your reasoning though for moving only external system credentials to k8s secrets?  For example, would it make sense to store the object store accounts used for implicit copies in k8s secrets instead of vault as well ... and similarly the accounts used for the (future) ingest scenario?  These are of course set up by an M4D admin rather than a data user, but what is the reasoning for using vault for that and secrets for system credentials provided by data users?

I agree with you. That will all be handled as part of dataset credentials in a future issue. I'm taking a staged approach here.

I agree with you. That will all be handled as part of dataset credentials in a future issue. I'm taking a staged approach here.

Perhaps you should state that explicitly?  Currently it sounds like you are planning on using different solutions for different types of credentials?

This is blocked because of concerns with cluster tenancy model in multicluster setting. Basically the creation of Secret near M4DApplication in a remote cluster will not work. We need an alternative for the cluster tenancy model.

Creation of M4DApplication in remote clusters becomes an issue to handle with our current codebase anyway. I suggest to move forward without considering it.

Creation of M4DApplication in remote clusters becomes an issue to handle with our current codebase anyway. I suggest to move forward without considering it.

Closed in favor of https://github.com/IBM/the-mesh-for-data/discussions/253

Closed in favor of https://github.com/IBM/the-mesh-for-data/discussions/253