Code Quality: Break down service registration in App.xaml.cs into granular methods

Description
All Dependency Injection configurations are inside a single method. The ConfigureHost() method is becoming cumbersome and less manageable as services are added. I recommend an abbreviated ConfigureHost() method:
private IHost ConfigureHost()
{
return Host.CreateDefaultBuilder()
.UseEnvironment(ApplicationService.AppEnvironment.ToString())
.ConfigureLogging( /* ... / )
.ConfigureServices(ConfigureServices) // This is where the specific registration methods get called*
.Build();
}
and improved orchestration and navigation offered by the following:
private void ConfigureServices(IServiceCollection services)
{
// General services
RegisterGeneralServices(services);
// Storage services
RegisterStorageServices(services);

// ViewModel services
RegisterViewModelServices(services);

// Additional services
RegisterAdditionalServices(services); // If you have more services to add

}
private void RegisterGeneralServices(IServiceCollection services)
{
services.AddSingleton<IUserSettingsService, UserSettingsService>();
// ... other general services
}
private void RegisterViewModelServices(IServiceCollection services)
{
services.AddSingleton();
// ... other ViewModel services
}
// other services
Concerned code
File: App.xaml.cs
	private IHost ConfigureHost()
	{
		return Host.CreateDefaultBuilder()
			.UseEnvironment(ApplicationService.AppEnvironment.ToString())
			.ConfigureLogging(builder => builder
				.AddProvider(new FileLoggerProvider(Path.Combine(ApplicationData.Current.LocalFolder.Path, "debug.log")))
				.SetMinimumLevel(LogLevel.Information))
			.ConfigureServices(services => services
				.AddSingleton<IUserSettingsService, UserSettingsService>()
				.AddSingleton<IAppearanceSettingsService, AppearanceSettingsService>(sp => new AppearanceSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
				.AddSingleton<IGeneralSettingsService, GeneralSettingsService>(sp => new GeneralSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
				.AddSingleton<IFoldersSettingsService, FoldersSettingsService>(sp => new FoldersSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
				.AddSingleton<IApplicationSettingsService, ApplicationSettingsService>(sp => new ApplicationSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
				.AddSingleton<IPreviewPaneSettingsService, PreviewPaneSettingsService>(sp => new PreviewPaneSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
				.AddSingleton<ILayoutSettingsService, LayoutSettingsService>(sp => new LayoutSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
				.AddSingleton<IAppSettingsService, AppSettingsService>(sp => new AppSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
				.AddSingleton<IFileTagsSettingsService, FileTagsSettingsService>()
				.AddSingleton<IPageContext, PageContext>()
				.AddSingleton<IContentPageContext, ContentPageContext>()
				.AddSingleton<IDisplayPageContext, DisplayPageContext>()
				.AddSingleton<IWindowContext, WindowContext>()
				.AddSingleton<IMultitaskingContext, MultitaskingContext>()
				.AddSingleton<ITagsContext, TagsContext>()
				.AddSingleton<IDialogService, DialogService>()
				.AddSingleton<IImageService, ImagingService>()
				.AddSingleton<IThreadingService, ThreadingService>()
				.AddSingleton<ILocalizationService, LocalizationService>()
				.AddSingleton<ICloudDetector, CloudDetector>()
				.AddSingleton<IFileTagsService, FileTagsService>()
				.AddSingleton<ICommandManager, CommandManager>()
				.AddSingleton<IModifiableCommandManager, ModifiableCommandManager>()
				.AddSingleton<IApplicationService, ApplicationService>()

#if UWP
.AddSingleton<IStorageService, WindowsStorageService>()
#else
.AddSingleton<IStorageService, NativeStorageService>()
#endif
.AddSingleton<IFtpStorageService, FtpStorageService>()
.AddSingleton<IAddItemService, AddItemService>()
#if STABLE || PREVIEW
.AddSingleton<IUpdateService, SideloadUpdateService>()
#else
.AddSingleton<IUpdateService, UpdateService>()
#endif
.AddSingleton<IPreviewPopupService, PreviewPopupService>()
.AddSingleton<IDateTimeFormatterFactory, DateTimeFormatterFactory>()
.AddSingleton<IDateTimeFormatter, UserDateTimeFormatter>()
.AddSingleton<IVolumeInfoFactory, VolumeInfoFactory>()
.AddSingleton<ISizeProvider, UserSizeProvider>()
.AddSingleton<IQuickAccessService, QuickAccessService>()
.AddSingleton<IResourcesService, ResourcesService>()
.AddSingleton<IJumpListService, JumpListService>()
.AddSingleton<IRemovableDrivesService, RemovableDrivesService>()
.AddSingleton<INetworkDrivesService, NetworkDrivesService>()
.AddSingleton()
.AddSingleton()
.AddSingleton()
.AddSingleton()
.AddSingleton()
.AddSingleton()
.AddSingleton()
.AddSingleton()
.AddSingleton<IJsonValidator, JsonIntegrityChecker>()
).Build();
}
Gains
Breaking down service registration into smaller, focused methods improves the code's organization, readability, and maintainability.
Requirements
Refactoring IHost ConfigureHost()
Comments
No response

That would not be delightful, I believe. and I think where we register services must be the same method, the same class to avoid confusion. And also to fix this situation, I am going to introduce AppLifecycleHelper static helper class containg this too. That helper provides some methods that should be away from App class.

@0x5bfa What's the state of this issue? I can refactor service registration immediately and we can close this issue. Please let me know.

@yaira2 can you move to Ready to Build?
Once approved, you would like to create AppLifecyleHelper class in App.Helpers namespace, and put configuration class to there.

@0x5bfa Okay. This means I need to write the AppLifecycleHelper class in App.Helpers. I'll put the service registration methods there. Do I understand correctly?

Yes.

@HorseBandit we're discussing this proposal and will let you know if we decide to move forward with it.

It looks good! But I'd separate it into its own static helper class (ServiceRegistrationHelpers) to keep the code clean in App.xaml.cs

yes id suggested him to. @d2dyno1. but for now, we can put all static classes should be moved in the same class from App class


Feature request: Sync call to listen to a ReceivePort that releases current DartVM thread

Given the changes that have happened over the last couple of years in bringing light-weight Isolates to Dart to make using them in larger numbers much more feasible, I would like to propose the ability for making a sync call to receive messages from a ReceivePort that importantly does not block the DartVM's current thread pool thread and instead releases the thread to service other Isolates.
This would help address a number of use cases that are currently not possible.
Firstly it would allow interpreters and VM's built in Dart, eg LuaDardo to be able to make calls to async Dart functions without itself having to have its whole codebase be polluted by the blue/red color problem that @munificent highlighted given the current async implementation in Dart.
Secondly this would help with the FFI callback situation, as it would mean that the Dart user programmer could guarantee that no DartVM thread would enter a specific Isolate until they explicitly "unblocked" a specific Isolate, so it should be safe for that Isolate to get direct FFI callbacks from non Dart threads. I think I remember @mkustermann mentioning that somewhat simliar functionality was proposed on the native side of FFI for releasing the current thread, but unfortuntately I can't seem to find which issue that comment appeared in.
Thirdly I think it would help implementations that have previously used waitFor() or would in the future want similar functionality to it get the functionality without again having to make  existing or even new codebases be riddled with async both due to code complexity and the performance implications of having to "buy into" using async throughout a whole codebase that otherwise would be completely sync in nature.
I'm not familiar with all the details of how this could be done in the DartVM or even if this has already been discussed in other issues, but I thought this could serve as starting point for further discussion.

Sounds something like https://github.com/dart-lang/sdk/issues/44804, which was suggested as a migration path for waitFor.

could guarantee that no DartVM thread would enter a specific Isolate until they explicitly "unblocked" a specific Isolate, so it should be safe for that Isolate to get direct FFI callbacks from non Dart threads.

If the isolate is blocked, no Dart code should run until it unblocks. That should block FFI callbacks to the isolate as well, unless they are calling directly using the blocking port. (Which is a possibility, the NativeCallback having a waitForCall() method which blocks until an FFI calback to it happens, then it runs that callback synchronously as if inside the waitForCall() invocation, and finally returns from waitForCall().)
Blocking on any other port would not allow native callbacks to run through an unblocked port. It's too dangerous to run Dart code that might initiate asynchronous computations when we are blocking the event loop.

Yes this is effectively a duplicate of https://github.com/dart-lang/sdk/issues/44804 sans "releasing current thread" part.
I think the releasing part comes from the confusion around maximum number of active mutators which can enter the same isolate. The core of this limitation has nothing to do with threads, thread pools or etc. It's limitation originates from the structure of the heap and how new space is partitioned into thread local allocation buffers.
Note that you can't really release the thread back to the thread pool when you are doing a synchronous call - the thread stack is occupied by a synchronous part of the call and can't be reused. Threads can only be released back to the pool if the synchronous function they are running has completed.
What you can do is to exit the isolate (call Dart_ExitIsolate from your native code) in this case this thread is not going to count as a mutator towards the limit. This is something you can do already: we have exposed Dart_ExitIsolate through DL C API in https://github.com/dart-lang/sdk/commit/a2512819f82890a1493c2454001c9e7b21a2c721.
Effectively this means that you can already build a type of synchronous communication channel yourself by writing a bit of native code which exits isolate and blocks on a condition variable. We also want to eventually add this capability directly into FFI (see https://github.com/dart-lang/sdk/issues/51261).

Firstly it would allow interpreters and VM's built in Dart, eg LuaDardo to be able to make calls to async Dart functions without itself having to have its whole codebase be polluted by the blue/red color problem that @munificent highlighted given the current async implementation in Dart.

I am not sure this is connected. Interpreter which manages its own stack (rather than using Dart's stack) can already call Dart's asynchronous functions without being affected by this problem. The only problem here is sandwich stacks like "Lua -> Dart -> Lua -> Dart" where the innermost call wants to be asynchronous. But that's problematic in any language e.g. in C version of Lua you will get an error if you try to suspend a coroutine across a C function invocation.

@lrhn thanks so much for looking at this! Yes on a quick read, my request does sound like https://github.com/dart-lang/sdk/issues/44804 but I'll want to take some time to ready through that issue more carefully to make sure I understand it properly.
@mraleph I wanted to follow on your comment as I think I may have missed or misunderstood something fundamental. In the case of a interpreter implemented in Dart that has its own stack, eg. afaik thats an exact description of LuaDardo that is written in completely sync Dart code, how can it call out to Dart async functions from sync code??
Its my current understanding that even a single call to a Dart async function means that the whole Interpreter ends up being riddled with async code, because I tried to do just that and I ended up with quite a mess going all the way into the interpreters for(,,) loop.
I'm only looking for Lua->Dart calls. For example something as basic as a sleep(), where inside Lua code, I can have an opcode that calls Dart's Future.delayed() blocking the Lua execution but not blocking the underlying Dart Isolate thread. If I've missed something obvious on how to do this, I'll be very happy to hear that! as it immediately solves my most pressing need here.

@maks

In the case of a interpreter implemented in Dart that has its own stack, eg. afaik thats an exact description of LuaDardo that is written in completely sync Dart code, how can it call out to Dart async functions from sync code??

Interpreter with its own stack is suspendable/resumable at any point during the execution. Let me try to illustrate it with some sketch of the code:
class Interpreter {
  var callstack = <({LuaFunction function, int pc})>[];

  FutureOr<Object?> run() {
    var (:function, :pc) = callstack.removeLast();  // Continue from the last frame
    while (true) {
      final instr = function.body[pc++];  // Next instruction
      switch (instr.opcode) {  // Execute instruction
        case Opcode.CALL:
          final target = ...;
          if (target is LuaFunction) {
            callstack.push((function: function, pc: pc));
            // We also need to deal with registers, copy arguments, etc.
            // but I am omitting all this stuff for brevity.
            function = target;
            pc = 0;
            continue;
          } else if (target is DartFunction) {
            final int resultReg = ...;  // Index of the register in which result is expected
            final result = target.f.apply(...);
            // Got result of the Dart function. If it is a Future we want to auto-await it.
            if (result is Future) {
              callstack.push((function: function, pc: pc));  // Remember where to resume.
              return result.then((v) {
                setRegister(resultReg, v);
                return run();  // Continue interpreting from the suspended frame.
              });
            } else {
              setRegister(resultReg, result);
              // Continue interpreting.
            }
          }
        }
      }
    }
  }
}

Of course asynchrony leaks into the Dart caller which calls into the interpreter, but that's expected:
// Underlying execution might be asynchronous so we need to await luaState evaluate.
final result = await luaState.evaluate("return callSomething()");

Bad news though - I looked at LuaDardo code and unfortunately it is not a stackless interpreter. It uses Dart stack when doing calls. So naturally it does not have the properties I describe here and that explains why it does not implement coroutines - unfortunate/incorrect implementation choice.

Thanks for the detailed explanation @mraleph !
I think I can see now what you mean about stackless interpreter implementation.
And yes I'd expect asynchrony to leak out into the VM's caller, that's not an issue from my point of view.
The approach you show in your code is I think fairly close to what I actually tried to do earlier in LuaDardo and of course failed. But now thanks to your explanation, I now realise why that didnt work and how I could go about trying to refactor LuaDardo's implementation to fix it, though it looks like it will require a lot of rework there.
I know it's not the Dart teams job to do CS lessons, but given the nature of Darts async/await implementation with the compiler splitting functions on the awaits and given just how many interpreter/VM implementations there are written in Dart (I personally came across half a dozen so far) it may be worthwhile to document the low-level details of async code, though @mraleph your comment above already does a pretty good job of that for future readers.
I think at this point, I'll close this issue as I know now that what essentially I'm asking for what is in https://github.com/dart-lang/sdk/issues/44804 BUT I think being able to free the underlying Dart thread is a very important distinction so I'll continue the discussion there.


Refresh Lobby Info Box

Update the Lobby Info Box[UpdateInfoText()] when PlayerStatusChanged()is called

About the PR
The PR #7402 added player count to the lobby info box, but I did not realize that it didn't update for the client as more players joined the server. This PR added UpdateInfoText() to the PlayerStatusChanged() method so that whenever that occurs the Info Box will refresh.
Because of this the Info Box will now also display the correct map in the box when the map changes in lobby. (If PlayerStatusChanged is called)
Screenshots

https://user-images.githubusercontent.com/65792927/162887937-ad5f2f4d-1bcb-4e2a-a9fb-773a7348f8ac.mp4
Changelog

:cl:

tweak: Lobby Info Box now refreshes when PlayerStatusChanged() is called.

For the Reviewers there is also the problem that when a Client Disconnects it doesn't display the correct player count and is off by one. I have been trying to dig around and resolve that issue, but I have so far failed. Any suggestions?

Because of this the Info Box will now also display the correct map in the box when the map changes in lobby. (If PlayerStatusChanged is called)

shouldnt the map changing also call UpdateInfoBox then?

Because of this the Info Box will now also display the correct map in the box when the map changes in lobby. (If PlayerStatusChanged is called)

shouldnt the map changing also call UpdateInfoBox then?

The map will only change when the playercount does under rotation mode. Vote maybe should though.

When I tried to do both of those things before making this PR, I got frustrated because it was a private method. Looking back at it now though, I can get that added in. Just to be sure though, it is fine to make UpdateInfoText() a public method right?

Should I put all of the tweaks under one tweak in the CL?

ye, and it should be player facing (no mention of like specific methods/variables)


Added code generation for windows.

Added a generationWin.hpp file that can generate valid assembly for windows. I have not added a windows linker into the project because that would mean adding an exe to the project which could make it look unsafe. So you can choose your own linker. I prefer GoLink as that's what I used to test this. Also added another argument which can be [win/linux] so the correct command syntax is now:
hydro <input.hy> <win/linux>
For any linker you do choose you need to link kernel32.dll so that ExitProcess works. If you need any more info you can ask me.
I have been a fan of the project on YouTube and wanted to contribute my part to it. Anyways waiting for the next vid and really hope you get more subs.

Thanks but I don't want to deal with any other platform at the moment

Yeah, that's fine I guess this is still here for anyone who tries to fork this and make a windows version.

Yeah, that's fine I guess this is still here for anyone who tries to fork this and make a windows version.

Yeah this really helped me get going this in Windows natively.


Extension causes high cpu load

Issue Type: Performance
Extension Name: php-intellisense
Extension Version: 2.3.10
OS Version: Windows_NT x64 10.0.17134
VSCode version: 1.32.3

:warning: Make sure to attach this file from your home-directory: C:\Users\sony\felixfbecker.php-intellisense-unresponsive.cpuprofile.txt :warning:
Find more details here: https://github.com/Microsoft/vscode/wiki/Explain:-extension-causes-high-cpu-load

It's normal because it use PHP interpreter for use it. If you concern about it, then use Intelephense, it only depend on vs code, nothing else, and it work fast on hugh project. https://github.com/bmewburn/vscode-intelephense
I also hope this aren't problem, but on old computer, like mine, Intelephense only need some second to scan Dolibarr project that have thousand of big file.

Duplicate of #411


DownloadFile with restart option?

Hi there,
The OpenRead method is now obsolete and DownloadFile is recommended instead. But what about OpenRead(string path, FtpDataType type, long restart)? There is no way to use DownloadFile  with restart option. The workaround is to use the static OpenRead method but that is only a workaround. Any other options / plans?

Thank you for this info. DownloadFile is a new API and to get info about such advanced use cases I have left OpenRead still in there. It will be supported until all use cases are tackled. For now you can still use OpenRead. I will improve DownloadFile with resuming support and get back when its ready.

As of now its better to use OpenRead() for this advanced use case.


Can't send notification to all private channels

I want to have an ability to send notification to private channels of all users in my group
This is my code
public static void main(String[] args) throws LoginException {

        final JDA bot =
                new JDABuilder(AccountType.BOT)
                        .setToken("secret")
                        .addEventListener(new DemoApplication())
                        .build();

    }

    @Override
    public void onPrivateMessageReceived(final PrivateMessageReceivedEvent event) {
        if (event.getAuthor().isBot()) {
            return;
        }
         event.getJDA().getGuilds().get(0).getMembers().forEach(user->user.getUser().openPrivateChannel().queue());
        event.getJDA().getPrivateChannels().forEach(privateChannel -> privateChannel.sendMessage("ZDAROVA").queue());
    }

But only sender of this private message receive a message . What did i miss ?

The github issue tracker is reserved for reporting bugs or requesting features. Your issue is neither. Please visit the support guild for help.

@Sanduhr32
This code in not working , when code is not working as it supposed to work i think it's a bug
This is doc for openPrivateChannel method
/**
     * Opens a {@link net.dv8tion.jda.core.entities.PrivateChannel PrivateChannel} with this User.
     *
If a channel has already been opened with this user, it is immediately returned in the RestAction's
     * success consumer without contacting the Discord API.
     *
     *
The following {@link net.dv8tion.jda.core.requests.ErrorResponse ErrorResponses} are possible:
     *

     *
{@link net.dv8tion.jda.core.requests.ErrorResponse#CANNOT_SEND_TO_USER CANNOT_SEND_TO_USER}
     *
If the recipient User has you blocked

     *

     *
     * @throws java.lang.UnsupportedOperationException
     *         If the recipient User is the currently logged in account (represented by {@link net.dv8tion.jda.core.entities.SelfUser SelfUser})
     * @throws java.lang.IllegalStateException
     *         If this User is {@link #isFake() fake}
     *
     * @return {@link net.dv8tion.jda.core.requests.RestAction RestAction} - Type: {@link net.dv8tion.jda.core.entities.PrivateChannel PrivateChannel}
     *
The PrivateChannel to use to directly message this User.
     */
    @CheckReturnValue
    RestAction<PrivateChannel> openPrivateChannel();

You clearly dont know what asynchronous requests have not done when you immediately access a cache they write to.

@Sanduhr32
Got it , thank you

Also you shouldn't write messages to any user on all guilds.
Even if JDA queues the requests, it still can and will be considered API abuse.


⚠ Bofrost.lu has degraded performance

In b328936, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 817 ms

Resolved: Bofrost.lu performance has improved in af3c71c.


Implement authentication server

[ ] Implement endpoints for login, register, logout, reset password
[ ] Use passport.js with local and facebook strategies
[ ] Implement login
[ ] Implement register
[ ] Implement logout
[ ] Implement reset password
[ ] Use JWT in cookie as session storage

Closed in favor of using cognito on server with mutations


Remind user to check region when looking for CloudFormation stack during a recovery

It would be helpful to specify--in the final recovery script output instructions--to look at the CloudFormation stacks in the target region you specified to find the Service Endpoint URL.

This should be a quick documentation update in the recovery script.


Fix visual on pressed

Branch can be deleted after merge.

This makes the icons small when they are pressed not when just hovered.

Yep, this looks fine.  Thanks!


refactor(service): Remove use of legacy methods on $http promises.

Also saves a couple of lines of code.

This pull request fix some issues when using requests interceptors on $httpProvider. The interceptor can return new promisses that overrides the "success" and "error" callbacks

Any news on this? It' been a while.

The old methods are now deprecated: https://docs.angularjs.org/api/ng/service/$http

Looks fine, sorry for the delays.

Thank you again, landed as e7516dc


chore: various fixes to get the random data tests working on 2.1

Codecov Report
Attention: Patch coverage is 85.55556% with 13 lines in your changes missing coverage. Please review.

Project coverage is 76.86%. Comparing base (828b315) to head (11039ff).

Files with missing lines
Patch %
Lines

rust/lance-encoding/src/statistics.rs
0.00%
8 Missing :warning:

.../lance-encoding/src/encodings/logical/primitive.rs
91.30%
3 Missing and 1 partial :warning:

rust/lance-encoding/src/repdef.rs
66.66%
0 Missing and 1 partial :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3103      +/-   ##
==========================================
- Coverage   77.13%   76.86%   -0.28%
==========================================
  Files         240      240
  Lines       79833    79894      +61
  Branches    79833    79894      +61
==========================================
- Hits        61579    61410     -169
- Misses      15082    15313     +231
+ Partials     3172     3171       -1

Flag
Coverage Δ

unittests
76.86% <85.55%> (-0.28%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


processing archetype: generation of seed configuration should be optional

The generation of the configuration for the SEED XML Transformer should be made optional for those reasons:

If no XSLT stylesheet is given in the transformation set in the pom, then the build process fails.
Users may want to provide hand-written configurations instead.

Solution:

[x] move the generation into a build profile
[x] change the assembly descriptor to use either the generated config or handwritten config found in /${project.artifactId}.yaml.

mentioned in commit aacb5ed4c92b47dcb1f2331c483eee9142a88de2

marked the checklist item change the assembly descriptor to use either the generated config or handwritten config found in /${project.artifactId}.yaml. as completed

marked the checklist item move the generation into a build profile as completed

duplicate of #2


Supported hardware platforms for RHEL

File: engine/installation/linux/rhel.md
Somewhere near the top of the file, please identify what hardware platforms the installation supports.   Not everyone has x86.  There is power and s390x ...

Closed via #3027


DRAFT: Refactor *StreamCallback to be function objects

Done with a limited number of extensions until I can gather feedback. I propose that we get rid of the *StreamCallback base classes and just use std::function to type erase the callback types where necessary. The reason is simlicity of implementation and usage.
The code on the PR branch is tested with these cmake flags: -DFORCE_COLORED_OUTPUT=ON -DAWS_ENABLE_UNITY_BUILD=OFF -DASAN_BUILD=OFF -DENABLE_PYTHON=ON -DENABLE_OPS=ON -DENABLE_JNI=OFF -DENABLE_OPC=OFF -DENABLE_COAP=ON -DENABLE_GPS=ON -DENABLE_MQTT=ON -DENABLE_LIBRDKAFKA=ON -DENABLE_SENSORS=OFF -DENABLE_USB_CAMERA=ON -DENABLE_AWS=ON -DENABLE_SFTP=ON -DENABLE_OPENWSMAN=OFF -DENABLE_BUSTACHE=OFF -DENABLE_OPENCV=OFF -DENABLE_TENSORFLOW=OFF -DENABLE_SQL=ON -DENABLE_PCAP=OFF -DENABLE_LUA_SCRIPTING=ON -DENABLE_NANOFI=ON -DENABLE_AZURE=ON

InputStreamCallback and OutputStreamCallback are now aliases of std::function<int64_t(const std::shared_ptr<io::BaseStream>&)>.
ProcessSession::read and friends now take const InputStreamCallback& and const OutputStreamCallback&. This means value semantics of the function object, due to std::function. If the callback needs to preserve state after the call, it needs to be passed with std::ref(callback), which wraps it in a std::reference_wrapper<T>.
Introduced ProcessSession::readBuffer that returns the status as usual and the buffer as std::vector<std::byte>. If you think I should use uint8_t or char or unsigned char or anything else, feel free to open a discussion. (here or PM) Also introduced ProcessSession::appendBuffer.
Replaced about a dozen callback classes with calls to readBuffer/writeBuffer/appendBuffer.
Replaced simple callback classes with inline lambdas or stream pipes.
Converted stream pipes to use stream references instead of shared_ptrs. The motivation was to convert SiteToSiteClient to use stream pipes, but that didn't work out in the end and I reverted the SiteToSiteClient. I can revert this change if desired.

Thank you for submitting a contribution to Apache NiFi - MiNiFi C++.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[ ] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[ ] Does your PR title start with MINIFICPP-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[ ] Has your PR been rebased against the latest commit within the target branch (typically main)?

[ ] Is your initial contribution a single, squashed commit?

For code changes:

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file?
[ ] If applicable, have you updated the NOTICE file?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI results for build issues and submit an update to your PR as soon as possible.

I like this.  Just two comments for discussion:

using a const& {Input,Output}StreamCallback parameter, which makes the std::ref() necessary, does not feel natural to me.  If I was to write new code with a stateful callback, I would not know I'd need std::ref(), and then spend a fair bit of time trying to find out why my code doesn't work.  I would prefer a universal reference parameter, but I don't like having to put read() etc in the header.  Maybe someone has a better idea?
[[predictable]] I would put the stream shared_ptr to & change in a separate pull request.

I'll link them, but there is no issue for this yet. This is mostly here just to gather feedback.

Closing this for now, will reopen when I have something final-ish ready


Corrupt Layout

This is the best out of the various projects I've tried. I am having a major issue though, I can't "answer" any questions from the admin board, the question control panel doesn't function right. Am I missing something?

Hey @haydenhrm! Unfortunately I think the corrupted layout might be an issue on Windows for newer versions of Java. I did see this happen on for someone else recently, and they were also on Windows. It's been a long time since I've updated the project - I can assure you this didn't use to happen haha. As far as I know, it still works fine on macOS.
I don't have time / don't really intend to update this project any further (maybe in the far future, but definitely not any time soon). So the best advice I can offer for now is to try an older version of Java (I haven't tested this, so I'm not sure if this will fix it), or run the program on a macOS device. Sorry if this isn't the ideal outcome!
--
If you (or anyone reading this comment) are a Java programmer and know what the issue is, you are more than welcome to submit a PR to fix the issue :)

Thanks @benyap for the response. I know this is a 5 year old project and you're onto other things, so no worries. I will give it a go on my Mac and/or will try to resolve the problems with new JDK version (I finally gave up trying to get the project open in intellij and compiled it okay in eclipse).
I plan on using your creation to livestream a 'Family Feud' game with a bunch of friends.
Merry Christmas!

@haydenhrm ah yes this was made in Eclipse, happy to hear you got it set up. All the best with this and Merry Christmas to you too!

@haydenhrm Did you have any luck with this? I'm having the same issue and I don't have a Mac alternative.


4.2 Architecture Patterns

4.2 Architecture Patterns
Our team has decided to adopt the layering style, a common approach used in software architecture to organize the components of an application into distinct layers. Each layer is designed to handle a specific aspect of the application, and well-defined interfaces separate the layers from promoting loose coupling and modularity. The layering style provides a clear and organized structure for the application, making it easier to understand, maintain, and evolve. It also helps to promote the separation of concerns, allowing different aspects of the application to be managed and developed independently. As this project requires different groups to work on different parts and components, our team has decided to use the layering architecture.

Reviewed and Completed on Time: 9/2/2023


Deploy to AWS

Hi, When do you think the AWS documentation would be ready?

@ade5791 hi! unfortunately, it's not actively being worked on at the moment, but glad to hear there is interest. So, no ETA. If you have any experience with k8s + AWS please feel to contribute/help out.

I believe it should be quite similar. would need to edit storage type to
replace “do-block-storage” but not sure if anything else would be required

--
@jamiew https://twitter.com/jamiew | https://jamiedubs.com
https://www.jamiedubs.com/


Fix finch_test - protocol_not_negotiated

Hello,
When upgrade Mint from 1.0.0 to 1.1.0, run Finch's tests will get the following error:
1) test connection options are passed through to the conn (FinchTest)
     test/finch_test.exs:271
     match (=) failed
     code:  assert {:error, _} = Finch.build(:get, endpoint(bypass)) |> Finch.request(H2Finch)
     left:  {:error, _}
     right: {:ok, %Finch.Response{body: "OK", headers: [{"cache-control", "max-age=0, private, must-revalidate"}, {"content-length", "2"}, {"date", "Thu, 02 Jul 2020 09:06:35 GMT"}, {"server", "Cowboy"}], status: 200}}
     stacktrace:
       test/finch_test.exs:283: anonymous fn/1 in FinchTest."test connection options are passed through to the conn"/1
       (ex_unit 1.10.3) lib/ex_unit/capture_log.ex:74: ExUnit.CaptureLog.capture_log/2
       test/finch_test.exs:282: (test)

Since Mint's commit released in 1.1.0 will not support protocol negotiation for TCP connections, Finch's original test case will be break after this upgrade.
I refer Mint's similar test case to modify the above fail test case, its works fine with Mint 1.0.0 and 1.1.0, please review.
Thanks,
Xin

Thanks, I understand your intention now, in my opinion if the external service is stable and trusted that would take more testing cases, and can reduce our local test HTTP server related working, but there are many trade-off need to evaluate as well, I am open about this.

FYI, I try to setup local HTTP/1.1 server with the self-signed certs, here are my local sample:
defmodule Finch.HTTP1Server do
  @moduledoc false

  @fixtures_dir Path.expand("../fixtures", __DIR__)

  def start(port) do
    children = [
      Plug.Adapters.Cowboy.child_spec(
        scheme: :https,
        plug: Finch.HTTP1Server.PlugRouter,
        options: [
          port: port,
          cipher_suite: :strong,
          certfile: Path.join([@fixtures_dir, "selfsigned.pem"]),
          keyfile: Path.join([@fixtures_dir, "selfsigned_key.pem"]),
          alpn_preferred_protocols: ["http/1.1"],
          next_protocols_advertised: ["http/1.1"],
          otp_app: :finch,
          protocol_options: [
            idle_timeout: 3_000,
            inactivity_timeout: 5_000,
            max_keepalive: 1_000,
            request_timeout: 10_000,
            shutdown_timeout: 10_000
          ]
        ]
      )
    ]

    Supervisor.start_link(children, strategy: :one_for_one)
  end
end

But I occur this error for connection failed, and I do not find the right way to figure out this issue, if anyone can help me on this, we may remove the external service if possible, I feel this local setup increased complexity for me, but I gain new knowledge from this.
Thank you very much!
Failed to connect to https://localhost:4002: TLS client: In state hello received SERVER ALERT: Fatal - No application protocol

I also think that relying on Mint's logging for these tests is going to be pretty brittle. As a user of the API, I would probably expect to get some sort of error back.

Agree, we should use the matched error instead of the logging in test cases, I am learning Finch, and I have some questions about the return error need yours help, I will open another issue to listen to yours opinions.

I'm not a huge fan of relying on an external service in these tests but perhaps that makes the most sense?

One approach I sometimes take for cases like this is tagging the test as requiring an external service, disabling those tests as part of the automated CI, but running them by default otherwise. It isn't perfect, but it keeps them being run by people locally without holding up merges.

FYI, after some investigations, looks like Cowboy does not support disable HTTP/2 so far, here is my finding from its rfc7540_SUITE test, please correct me if any missing.

@keathley hello, we have initialized an http/1.1 integration test to replace the external service, could you please review these changes to keep the testing pass with {:mint, "~> 1.1"}, and then we can update assert capture_log in the test to use returned error in the assertion later if it is acceptable.
Please let me know if any I can help on it.

Thanks @xinz, this has been merged into main.


Remember which categories are expanded (fixes 720,785,938)

Fixes #720, #785, #938
Were any Django, import pipeline, table_schema, or dictionary files modified? Y

Database used: opus3_test_200107
All Django tests pass: Y

Were any JavaScript or CSS files modified? Y

JSHINT run on all affected files: Y
Tested on Chrome, Firefox, Safari, and iOS: Y
(Remember to test all browser sizes)
Tested for race conditions (with delayed API calls if applicable): Y

Description of changes:
Change how expanded categories are remembered when a new search menu (left side of Search tab) or a new Select Metadata menu (left side of Select Metadata dialog) is fetched due to a change in the search constraints. Now the list of expanded categories is passed to the Django, which includes the appropriate collapsed/show classes in the returned HTML. This eliminates the previous kludge of having the JS expand the categories after the HTML is loaded, resulting in a flicker.
Known problems:
None

Database used: opus3_test_200107
All Django tests pass: Y
JSHINT run on all affected files: Y (widgets.js & selectMetadata.js)
Tested on Chrome, Firefox, Safari, and iOS: Y
(Remember to test all browser sizes)
Tested for race conditions (with delayed API calls if applicable): Y


Update dependency versions

Codecov Report

Merging #153 (ca2198e) into master (c01857d) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #153   +/-   ##
=======================================
  Coverage   84.04%   84.04%
=======================================
  Files          19       19
  Lines         282      282
  Branches        6        6
=======================================
  Hits          237      237
  Misses         45       45

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 c01857d...ca2198e. Read the comment docs.


Block Write on Read finishing

Continuation of https://github.com/hajimehoshi/oto/pull/105 to fix the issues encountered.
@hajimehoshi Draft PR for now but this is a potential solution. If this approach would work for you I'll flesh it out.


-Support for kafka-sink

Signed-off-by: rajeshLovesToCode<EMAIL_ADDRESS>Description
Kafk Sink  with SASL_PLAINTEXT, OAuth, schema registry, multithreaded producer and DLQ.
Issues Resolved
Github issue https://github.com/opensearch-project/data-prepper/issues/1986
Check List

[x] New functionality includes testing.
[x] New functionality has been documented.

[x] New functionality has javadoc added

[x] Commits are signed with a real name per the DCO

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

we are closing this PR as we have raised the new PR #2999.


Cors problem on Web

The plugin stop working for web and also app, seems that the provider added another layer of security

i am also having CORS problem

I also have this CORS issue on web.


Error on Download (0x30100007)

Hi,
I'm trying to get a download of a file to work and I keep getting errors related to downloads.
The last error I receive is:
Action 'Download' complete. Result: 0 (failed), 806354951 (0x30100007) [ADUC_Workflow_WorkCompletionCallback:890]
Is there a document somewhere I can use to decode the error (0x30100007)?
This is related to swupdate:2 and I'm not using the simulator for this. I'm trying to do this one using a RaspPi with kernel 6 OS. I'm finding the troubleshooting to be problematic and I'm shooting in the dark here. I would prefer not to digging in the codebase to work out what's going on. Any help or advice will be much appreciated.
Kind regards,
Dylan

@DylanFromEdwards
It would be great if you could add a link to the documentation you are following for these steps? This would help us redirect the issue to the appropriate team. Thanks!

@DylanFromEdwards
Thank you for bringing this to our attention.
I've delegated this to content author, who will review it and offer their insightful opinions.


Get LCA2015 JSON feed importing correctly

Check that the format of the schedule.json has not changed from previous LCAs, and get this importing properly into the website.

Fixjd by #91


Still running with latest Allwinner v2 firmware for YI-Cameras?

Hi there,
I found this script and I am currently trying to get it working within the latest Allwinner v2 firmware 0.3.0.
Maybe I miss any setting or something - but I don't get it working.
Within the Allwinner log I can see the script being started.
root@yi-20fb:~/bin# yihmail -f<EMAIL_ADDRESS>-t<EMAIL_ADDRESS>-u<EMAIL_ADDRESS>-p MyPassword -h smtp.gmail.com
yihmail started
fork/exec /tmp/sd/yi-hack/bin/ipc_multiplexer: no such file or directory (err 6)

But even with the option -l	Use log file set within the command not even a log file is generated anywhere.
@WalkingDot - are you able to assist?
Or is this an already obsolete repo without support?

With some help I was able to solve the issue.
Within the latest Allwinner version the file "ipc_multiplexer" is missing.
So using the files from a previous release made the yihmail run properly!


Complete CameraInfo data at SetCamereInfoService

Take into account binning, ROI and distortion models beyond plumb_bob

Done at f206941effbc1446c678fcb4effb53c5858e6f1e


Vega-Lite integration and a cell set size bar plot

Fixes #519
This PR adds a VegaPlot component, which is a wrapper around the react-vega Vega component.
I implemented the cell set size bar plot using this component and the Subscriber pattern, with CellSetSizesPlotSubscriber and CellSetSizesPlot components.

I added an additional listener for onResizeStop, does that fix the resize issue?

I'm still seeing that behavior to some degree - does it not happen for you?

I am not noticing anything wrong in Firefox, Chrome, or Safari when I resize the react-grid-layout item or resize the browser window.

Interesting, I'm still seeing the behavior.

It happens when I resize quickly - if I go slowly enough, it resizes properly.

I wrapped the onResize with the throttle function, hopefully this helps with the quick resizes

Not sure what's up - I'm still seeing it but if it's just me, then we should just file an issue and move on.

Ah ok thanks for that gif, I was able to reproduce it. Should be fixed now by debouncing the window resize event.


Circular reference in Markdown and AttributedStringRenderer classes

There are two issues that lead to memory leaks when using Dumpling.
Every time renderAttributedString(theme:) is called, it allocates a new instance of AttributedStringRenderer, which is never deallocated. AttributedStringRenderer.contentRenderer.renderer is a strong reference to the AttributedStringRenderer instance itself, which should be weak or unowned to avoid a retain cycle.
Secondly, Markdown references itself through a long chain of closures:

Hey, thanks for reporting that. I will investigate it.


CAYW returns empty results (Zotero 5.0.36beta)

[x] I have verified that I am on the latest release of BBT (https://github.com/retorquere/zotero-better-bibtex/releases/latest) and Zotero
[x] I am posting a single question, bug or feature request
[x] I have included a descriptive subject of the problem
[x] I am available for follow-up questions and testing

Bug classification
CAYW
Non-export problems with BBT
When calling CAYW using http://localhost:23119/better-bibtex/cayw?format=mmd&clipboard=yes the picker doesn't come up. Error report is DJJE5DJU -- this doesn't have debug, let me know if you still need this, but the main error looks pretty promising. Since the new beta includes significant changes to integration.js, this is probably not surprising. Let me know if you need anything else

Ugh, I don't like the sound of "significant changes" -- this part of Zotero is essentially undocumented. Do you know anything about these changes?

Adomas says the integration hasn't changed.

:robot: this is your friendly neighborhood build bot announcing test build 5807 ("cayw: wait for BBT ready").

The picker pops up for the new beta, but the actual fetch fails. It's reproducible, so this one shouldn't be too hard (FLW).

Found it. The picker returns itemIDs as strings rather than numbers in the beta.

:robot: this is your friendly neighborhood build bot announcing test build 5819 ("beta changes type of itemID in CAYW").

Can you give 5819 a spin?

We've fixed it on our end. https://github.com/zotero/zotero/commit/079cb258f44504acd7f335f700d9e5d245a52586

:robot: this is your friendly neighborhood build bot announcing test build 5847 ("fixed on Zotero end").

@adam3smith can you try 5847 with the new beta after the fix from @adomasven ?

Working here, thanks!

Merged into release


update the optimizer of hugginface adapter trainer

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.zhangtaolin.ztl seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Show personal bank account option when sending money

Details

We want to show personal bank account option when sending money to user.
Fixed Issues

$ https://github.com/Expensify/App/issues/38739
PROPOSAL: https://github.com/Expensify/App/issues/38739#issuecomment-2012041824
Tests

Same as QA Steps

[x] Verify that no errors appear in the JS console

Offline tests

Same as QA Steps
QA Steps

Go to any dm chat
Click + > Send money
Select USD currency and enter an amount > Click Next
Click Pay with Expensify
Verify there is a personal bank account option

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/50919443/b936d943-3868-4275-a679-2b06c2fad358

Android: mWeb Chrome

https://github.com/Expensify/App/assets/50919443/7bf6c691-08fa-486f-a230-cf233fd4a33e

iOS: Native

https://github.com/Expensify/App/assets/50919443/ee1e1b1c-3e60-44a3-bdd6-c4ec440a8068

iOS: mWeb Safari

https://github.com/Expensify/App/assets/50919443/ede933ec-8cff-4778-971d-0c0933fa9472

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/50919443/31d68390-acf5-41b3-ad0e-ed0780ef8e3d

MacOS: Desktop

https://github.com/Expensify/App/assets/50919443/a115871f-5552-45c0-b535-49c3a77b0fcc

@bernhardoj Can you merge main again to see if it fixes the perf test?

@bernhardoj I'm having an issue if I have a bank account that's not fully set up (additional details required). Once I tap Pay with expensify, instead of the modal with the debit card or bank account option, I'm navigated straight to the additional info page for the bank account.
https://github.com/Expensify/App/assets/27287420/7f5c39f4-b212-4a63-aab6-3fa823882bde

Looks like there are multiple error coming from main

Remerging main should fix the ts error.

Done

@bernhardoj Do you have a personal bank account added? I can't get one added at the moment, so would be good to know the flow works all the way (money successfully sends, essentially!).

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@jjcoffee I think adding the personal bank account from the plaid can be done, but it's the KYC that I can't pass through.

@bernhardoj Yeah I have the same! I guess it shouldn't be related to this PR anyway, just hoped to have a complete test all the way through. I think we're good to skip it.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/arosiclair in version: 1.4.62-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/arosiclair in version: 1.4.62-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/arosiclair in version: 1.4.62-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/thienlnam in version: 1.4.62-17 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Pre-generate atlas with CC-licensed thumbnails of most common taxa

This will speed up initial browsing of some of the most commonly observed taxa.

[x] Calculate optimal atlas dimensions for provided images + constraints

[x] Max size, max # of images per atlas chunk, max # of atlas chunks (pages? sub-atlases?)

[ ] Make script to recursively get children of iconic taxa (down 2 levels or so?)
[ ] Make script to get most commonly observed taxa

Regional or global?

[x] Make script to generate thumbnails from selected taxa and package into an Atlas
[ ] Figure out better compression compatible with kivy Atlas?
[ ] Generate and package with Naturtag (if it's a reasonable size)

The inaturalist open dataset may make this a moot point.


currencies_controller.rb

module Api::V1
  class P2pTrades::CurrenciesController < Api::BaseController
    include ::P2pTrades::CurrencyHelper

    def index
      render json: currencies
    end
  end
end

Here's an overview of your P2pTrades::CurrenciesController in the Api::V1 namespace:
Controller Overview
The P2pTrades::CurrenciesController is designed to provide an endpoint for retrieving a list of currencies related to peer-to-peer (P2P) trades. It utilizes a helper module to fetch currency data.
Actions

index:

Purpose: Fetches and returns a list of currencies.
Details:

Calls the currencies method from the included P2pTrades::CurrencyHelper.
Renders the retrieved currency data as JSON.

Included Modules

P2pTrades::CurrencyHelper:

This module is expected to define the currencies method, which handles the logic for fetching and possibly formatting currency data.

Summary

Index: Retrieves and returns a list of currencies in JSON format.

This controller is straightforward, relying on a helper to provide the necessary currency data, ensuring that the controller remains clean and focused on handling requests and responses.


Pass in correct profile to the StackPlan + open database_dev_access for target stage

Set the profile correctly for StackPlan
The ctx.stage value is passed in as a profile_name to the RDS initialisation, but it doesn't get passed properly to the StackPlan.  Added an extra bit to the from_ctx() method that fixes this.
Open database_dev_access to target stage
The way I understand it, we've been creating a security group for our new exportdata instance (which lets Jenkins connect to the database) and then attaching it to the target stage (where we're going to import the data) as well so that Jenkins can pg_dump to the target database.
Reusing our new security group this way has occasionally meant -- if the script fails to clean up everything -- we leave open access to our target database which then never gets cleaned up.
Opening database_dev_access on the target stage gives jenkins access (so the migration script works like it did before) and it also gets closed nightly, so there's less potential for security holes.

👍


Change Feed: Fixes incorrect exception messages in VersionedAndRidCheckedCompositeToken

Pull Request Template
Description
During my own development I got confused due some incorrect exception message in the VersionedAndRidCheckedCompositeToken struct.
This PR fixes the exception messages to use the correct expected data type.
It also fixes an incorrect reference to the 'Version' property name in where 'Rid' should be references
Type of change
Please delete options that are not relevant.

[] Bug fix (non-breaking change which fixes an issue)

Closing issues
To automatically close an issue: closes #IssueNumber

/azp run

/azp run

@ealsur No problem, happy to help


General Questions.

Hi @zixia,
You have save me considerably a lot of time. Thank You for the contribution. Please tag this as a "question" rather than an issue (Can't seem to find the label on github  to associate this with). I'm still in the learning process especially with docker, node, typescript and linux (Coming from c# stack). Here's the following questions I'm hoping you can answer.

When we run with docker (i'm using AWS EC2), does it pull the images (or is it container) onto my local workspace?
Does this framework relies on 'https://app.wechaty.io/about' (Notice a TOKEN somewhere in the code)?
Is https://app.wechaty.io/' a portal in managing the bots ?
a. Any fees associated with it?
b. Is it possible for me to look at this site?
Can we shrink the QR code for scan?

Hi @sleedata ,
Welcome to the JavaScript world from C#, I love async & await, it was said that both of them comes from C# and is purposed to ES7 by Microsoft.
according to your questions, please see the following answers:

yes. docker run will pull the image to local from the Docker hub. so you will not need to download it again when you run docker run zixia/wechaty the second time.
no for a short answer. wechaty does not rely on wechaty.io, and it will not talk to wechaty.io unless you set WECHATY_TOKEN Env Variable.
yes. app.wechaty.io is designing to be a portal, to scan/check login&logout/restart bot/etc.

a. Any willing of payment is welcome. However, I have no idea how to price it so that it will be free from the start.
b. Of course, you are welcome to have a shot. It's still in very early design stage, but the code is runnable, you can have a test if you want to.

Yes, we can. Go to https://app.wechaty.io.

Howto Use Wechaty with https://app.wechaty.io

set TOKEN at wechaty runtime side:  (on your AWS EC2)

$ alias wechaty='docker run \
  -t -i --rm \
  -e WECHATY_LOG="$WECHATY_LOG" \
  -e WECHATY_TOKEN="$WECHATY_TOKEN" \
  --volume="$(pwd)":/bot \
  --name=wechaty \
  zixia/wechaty \
'

$ export WECHATY_TOKEN='A-TOKEN-WHAT-EVER-YOU-LIKE'
$ wechaty start

login app.wechaty.io with your TOKEN

Use your WECHATY_TOKEN as Username and Password, then click "Sign In"
If you are lucky enough, I think you could see your bot status online, include login QR Code, login status, and you can Shutdown the bot.
This portal is still in very early design stage, but the code is runnable and is enough for a demo.
Please let me know what you think, I'm planning to work on this around next month, any suggestion is welcome, any contribution will be very appreciated. :)
Good luck!

@zixia, I believe the value add is really in the portal. Do you have any architecture artifacts (Class Diagram, Overview Solution Architecture, Sequence Diagram, etc)? I am still learning your code structure, along with your design. If you don't mind sharing, pass along any documentation you may have. I can bring my enterprise skill-sets into the design. We need to consider scalability, exception handling, logging, authentication/authorization, etc...
If you don't have any of those artifacts, I'll start document it from a diagram perspective... I presume you have Visio?

@zixia, trying out the startup script, got the following error:
'
INFO Client Starting for WECHATY_TOKEN: abcd12345
WARN StateMonitor state.current(online,false) called but there are already in the same state for Io
INFO Wechaty v0.5.1 initializing...
WARN Io initWebSocket() close event[1006: ]
WARN Io reconnect() will reconnect after 0 s
WARN Io initWebSocket() close event[1006: ]
WARN Io reconnect() will reconnect after 0 s
/wechaty/src/wechaty.ts:131
throw new Error('no user')
^
Error: no user
at Wechaty.user (/wechaty/src/wechaty.ts:131:13)
at WebSocket.ws.on.e (/wechaty/src/io.ts:221:45)
at emitTwo (events.js:106:13)
at WebSocket.emit (events.js:191:7)
at Receiver.ontext (/wechaty/node_modules/ws/lib/WebSocket.js:841:10)
at /wechaty/node_modules/ws/lib/Receiver.js:536:18
at /wechaty/node_modules/ws/lib/Receiver.js:368:7
at /wechaty/node_modules/ws/lib/PerMessageDeflate.js:249:5
at afterWrite (_stream_writable.js:361:3)
at onwrite (_stream_writable.js:352:7)
npm ERR! Linux 4.4.19-29.55.amzn1.x86_64
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "start"
npm ERR! node v6.2.0
npm ERR! npm  v3.8.9
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>start: ts-node bin/client
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script 'ts-node bin/client'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the wechaty package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     ts-node bin/client
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs wechaty
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls wechaty
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /wechaty/npm-debug.log
'

@sleedata Sorry wechaty still has no any architecture artifacts yet, because it's just written from scratch.
And thank you for your interesting of help with the documentation, I'll very appreciate if you could help, and that will be very useful.
There will be a talk about Wechaty on 11th Dec, I'm invited by another Wechaty developer @Samurais at his Node Party event: http://www.bagevent.com/event/252533. You are welcome to join if you have time.

@sleedata how about ur research recently? :)

I'd like to talk with you when you got any new progress about Wechaty. This issue will be closed, however, contact me via email or wechat is welcome. :)


Feature/groupbox fieldset widget

A groupbox or fieldset widget, I hope you like it.

Hello, any information about the licence of this tool?


The typings for DollarApollo where missing getClient

I could not find any existing discussion on whether this field should be included or not. But the code base indicates it exists :)

:+1:

It's currently an undocumented method, will merge when it will be the case.

I have added minimal documentation, please let me know if there is anything you would like me to add

:+1:


aarch64-apple-ios, x86_64-apple-ios and aarch64-apple-ios-sim support

Problem:
I am unable to build for anything other than 86_64-apple-darwin on my macOS 86_64 machine with all tools installed as per the AWS Libcrypto for Rust User Guide.
if [[ "$PLATFORM_NAME" = "iphonesimulator" ]]; then
    TARGETS="aarch64-apple-ios-sim,x86_64-apple-ios"
else
    TARGETS="aarch64-apple-ios,x86_64-apple-ios"
fi

Are these platforms supported? Is aws-lc-rs a required dependency, or can s2n-quic be used with alternative cryptographic libraries? Having to dig deeper into the way this dependency works has been a bit confusing so far.
ld: in '/usr/local/opt/llvm/lib/libunwind.dylib', building for iOS-arm64 but attempting to link with file built for macOS-x86_64

If you could provide any insight or guidance on this matter, I'd really appreciate it. Let me know if you need more details or if there are any specific steps I should try.

Are these platforms supported?

The code in s2n-quic itself is quite portable. That being said, we do rely on other libraries to perform the cryptographic functions so we are as portable as those are.

Is aws-lc-rs a required dependency, or can s2n-quic be used with alternative cryptographic libraries?

It's not technically required, but there isn't currently another option that we support. Note that the latest version of rustls is now using aws-lc-rs by default.

Having to dig deeper into the way this dependency works has been a bit confusing so far.

I agree that it's not ideal. But s2n-quic doesn't aim to implement cryptographic primitives so this will always be the case, unfortunately. The place to improve this is in aws-lc-rs.
With the information you've shared, I'm not sure how to reproduce this on my end. I'll need every step you've taken to get this error and what you're trying to do.

Closing for now, feel free to reopen if you can provide the steps to reproduce this.


Structural directive microsyntax doesn't parse default @Input

I'm creating a structural directive and would like users to be able to use it via the microsyntax (e.g. *ngFor="let item of items; trackBy: trackByFn"). My directive looks like this:
class DeferredContentDirective {
  @Input('deferredContent')
  bool isDeferredContentEnabled = true;

  @Input()
  num deferredContentWidth;

  @Input()
  num deferredContentHeight;
}

I can use this like *deferredContent="shouldUseDeferredContent" or *deferredContent="width: 50; height: 100". However, if I try to combine the two (*deferredContent="shouldUseDeferredContent; width: 50; height: 100"), I end up with a parse error: "Binding expression cannot contain chained expression".
Note, I can provide all three inputs via the <template> syntax:
<template [deferredContent]="shouldUseDeferredContent" [deferredContentWidth]="50" [deferredContentHeight]="100">

Is this a bug in the microsyntax parser or am I just using it incorrectly?

@alorenzen since you just rewrote the template parser, any insight in to why this wouldn't work? This isn't just a special case for NgFor now is it?


Code adapter not working without CORS override

Reproduction repo here https://github.com/jbrown/sst-ion-auth-code-bug
I wasn't able to get the code adapter working without adding credentials: 'include' to the /callback fetch request. But when you do that the browser will error if the allowed origins is set to '*'. So I needed to be able to change the CORS settings which wasn't possible without a change to the Auth component. This change allowed me to do the following:
const auth = new sst.aws.Auth("Auth", {
  authenticator: {
    handler: "./infra/auth.handler",
    url: {
      cors: {
        allowCredentials: true,
        allowHeaders: ["content-type"],
        allowMethods: ["*"],
        allowOrigins: ["http://localhost:3000"]
      }
    },
  },
});

In the reproduction repo you can make a local change to Ion as in PR #493
To test, grab the generated code from the logs to insert into the page and submit.
Please let me know if I'm way off base and missing something. Without this I don't see how the /callback request is going to pass the authorization header, at least it didn't for me.

sst auth isn't intended to be used via fetch calls - it's meant to be used through redirectsi know this isn't ideal for some experiences but this is the model required by a "standalone auth server"

going to close for now as we have not released sst.Auth yet

@thdxr thanks for clarifying


Add subdomain to access the API

https://stackoverflow.com/questions/20609776/asp-net-mvc-subdomains is an answer

Could you explain the value that is given from this?

An alternative would be to separate the API into another server process and use a reverse proxy to delegate the traffic. The main advantage of this is the decoupling of the API and web app (both in terms of scalability and resiliency), though with increased complexity. To be more specific this would simply require extracting the API into a separate dot net app, make another docker image for that web app, and add a reverse proxy such as nginx, traefik or HAProxy (which would also be a third docker image).
In the current state of the project I don't think it is worth doing yet, but if we want to achieve more resiliency and scalability we should consider this (especially if we're considering scaling the service across multi server machines).

Now that we use traefik (courtesy of #83) this is now possible. However this would still require extracting the API controllers into a separate container.


Migrate JDK8u Mirror to Skara

@jerboaa made me aware of https://mail.openjdk.java.net/pipermail/jdk8u-dev/2021-December/014457.html
Essentially we will now be able to us https://github.com/openjdk/jdk8u for future releases so my proposal is to migrate our mirror away from Mercurial and switch to the Skara scripts which we know work so well for JDK11+

+1
I guess aarch32 would be the odd one out?

It would be, do you know if there's any plans to move that port to GitHub? Presumably, it's just a case of applying the patches to the new monojdk8u style repo

I don't know. Best to ask here: https://mail.openjdk.java.net/mailman/listinfo/aarch32-port-dev It's a separate port and project.

I don't know. Best to ask here: https://mail.openjdk.java.net/mailman/listinfo/aarch32-port-dev It's a separate port and project.
Thanks I'll post a message

I have provisionally setup https://github.com/adoptium/jdk8u_skara. I need to work on bringing our patches over

JDK8u Mercurial repo has now been renamed to jdk8u_hg and archived

jdk8u_skara has now been renamed to jdk8u and should now be the default project cloned by builds

Kicking off a test pipeline to verify that everything is in working order https://ci.adoptopenjdk.net/job/build-scripts/job/openjdk8-pipeline/1886/


CLI for SlowMist audit

No contract code was changed. The core library in /code/lib/ was expanded with some shared configurations, API invocations and data processing, and general workflows around using the APIs.

#37 #41 #44 were also merged


Firebase Admin (Nodejs) crashes because of error "A bucket name is needed to use Cloud Storage"

I am using a Firebase admin in Node.js and I am not going to use Cloud Storage in my own server, firebase app initialization working well before but it crash today because of error "A bucket name is needed to use Cloud Storage".
So I tried to integrate cloud storage to fix it but it did not work.
const admin = require('firebase-admin')
const serviceAccount = require('./letseat-dd347-firebase-adminsdk-op4zs-3ad050a59d.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
storageBucket: 'letseat-dd347.appspot.com'
})
Environment details
OS: MacOS High Sierra
Node.js version: 10.2.1
npm version: 5.6.0
Firebase version: 5.12.1
@google-cloud/storage version: lasted
Steps to reproduce
npm install
nodemon or node app.js or nom start.
=> Crashing because of error: A bucket name is needed to use Cloud Storage.

What's at routes/restaurant.js line 10?

Thí

this is my restaurant.js.
I don't know why I did not use Cloud Storage on my own server but It still keep crashing?

This is not useful. I expected to see references to admin in your code, but there aren't any in the above file. And interestingly, your stacktrace doesn't have any Admin SDK references either. I think something else in your code is trying to load the Cloud Storage module. Admin SDK doesn't load it unless admin.storage() is invoked explicitly. Can you share the file where Admin SDK is actually used/initialized?

Closing this due to lack of information. Please reopen with a minimal, reproducible test case if you want us to follow up.


Correct grammar in and rephrase README

Hi @Persola, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, MSBOT;


Unable to parse content from 'https://aka.ms/terminal-profiles-schema': Parse error at offset 14830.(768)

With Microsoft Windows Terminal installed, either go in Settings and click Open JSON file or open VS Code directly:
code --disable-extensions "C:\Users\$env:USERNAME\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
VS Code complains about a parse error in the schema:

But this is the official Microsoft schema and when I open this schema directly VS Code only finds warnings on trailing commas, but no errors.

Does this issue occur when all extensions are disabled?: Yes
VS Code Version:
Version: 1.65.0 (user setup)
Commit: b5205cc8eb4fbaa726835538cd82372cc0222d43
Date: 2022-03-02T11:12:08.962Z
Electron: 13.5.2
Chromium: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Windows_NT x64 10.0.19044
OS Version
Windows 10 Pro 21H2

Settings file does not support these contents, May I know why you have this content in this file?

This is a Windows Terminal settings file that I just opened in VS Code.
On Mon, Mar 7, 2022, 18:14 Sandeep Somavarapu @.***>
wrote:

Settings file does not support these contents, May I know why you have
this content in this file?
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/vscode/issues/144459#issuecomment-1060925075,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABCOIISAUBIILBFMUSVVITU6Y2OHANCNFSM5P7MOOFA
.
You are receiving this because you authored the thread.Message ID:
@.***>

It's a Windows terminal issue. I created https://github.com/microsoft/terminal/issues/12639


Firefox 48+ not working with SeleniumBasic

Hi GitHub team,
A new release of SeleniumBasic should be available adding GeckoDriver to the current FirefoxDrive (GeckoDriver seems strictly necessary to act on Firefox 48, released on  August 2016, and newer --> FF 48+).
In the meantime, is there any workaround to use SeleniumBasic with FF 48+?
SeleniumBasic is very usefull for all Excel VBA Macros acting on web through FF.
Thanks in advance.
Regards.

Dear mogulman52/Florentbr,
is there any development on the issue regarding the dll from excel to .Net as you mentioned in the previous comment or whatever is now available to act on FireFox48+  via excel VBA and Selenium?
Thanks in advance.
Regards.


use of mono camera instead of rgb for hands

I know the media pipe hands works best with rgb, but i think it will still work in mono even if i have to just convert the mono image to rgb by duplicating the channel 3 times.
OAKD pro includes a IR blanket illuminator.  I have OAKD with a separate IR blanket illuminator.
"Blanket IR LED illumination allows perceiving low-light and no-light environments. You can run your AI/CV processes on frames that are illuminated by the IR LED. Note that the color camera doesn’t perceive IR light, so you would need to use a mono camera stream for your AI/CV processes."
Now to get this to work with this sample, i would like to use the left or right mono camera instead of the RGB camera.
There is no option for mono in the HandTrackerBpf.py and my first try at replacing the line
        cam = pipeline.createColorCamera()
        cam.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P)
        cam.setBoardSocket(dai.CameraBoardSocket.RGB)

        with

        cam = pipeline.create(dai.node.MonoCamera)
        cam .setBoardSocket(dai.CameraBoardSocket.LEFT)
        cam .setResolution(dai.MonoCameraProperties.SensorResolution.THE_720_P)

This doesn't work because the createColorCamera object has a very different structure to what pipeline.create(dai.node.MonoCamera) returns.  So I think a new branch of the program needs to be done to handle this.  If you have an idea how to do that i think it would be very useful for low light applications.

In the past, I did some tests with gray level video or images. Unfortunately, it is very disappointing, mainly because the palm detector has hard time to find palms in gray images. The landmark regressor seems to be less penalized but as the former kick-starts the latter, the global result is not good.
That's something you can easily try in host mode by using a video or a webcam as input.
FIrst after: https://github.com/geaxgx/depthai_hand_tracker/blob/c803ad33437637d06c25fd44e5c3ef7c8760ff1e/HandTracker.py#L509
add:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY);  frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
and run:
./demo.py -i 0 to use a webcam as input or ./demo.py -i 0 --no_lm to run only the palm detector.
But surprisingly, the OAK-D's RGB sensor is doing a pretty good job under low light. Watch this video where the scene is just lit by the computer screen: https://www.youtube.com/watch?v=7wCWtuxaXZ8&ab_channel=geaxgx1
Note however, that with such hard conditions, the hands need to stay close to the camera.

Closing as stale. Please reopen if you'd like to work on this further.


Adds ginger grid as a framework resource

Hmm, not sure why this failed the check. It doesn't appear to be the line that was added in my PR.

No problem! Thanks :)


Feature/flow 47 process tree

What type of PR is this?
/kind feature
What this PR does / why we need it:
Adds a function at process state listener to create a relationship of processes when any process is created by a Start Process Node or a Subprocess Node.
Which issue(s) this PR fixes:
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

Additional documentation e.g., usage docs, etc.:

The default value for the database in the process-tree lib is different from the default value in the workflow-api, which may lead to unexpected behavior when both are used together and the value of POSTGRES_DATABASE is not set
https://github.com/flow-build/process-tree/blob/67a23832a51cca8954ed85e5632119f36c6cc752/src/knexfile.ts#L13
https://github.com/flow-build/workflow-api/blob/a7473245f24491c22c9cbbc0cb9cac736d5a4bce/knexfile.js#L13
This issue is breaking the unit tests suite

I decided to go on a different direction... I changed the tree class to receive the db connection from the workflow-api. This way the library won't use any environment variable to run.
It may not work if the client for the workflow-api is completely different (sqlite, for example).

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Error Handling

Hey,
it looks like the Error Handling is broken.
The 400 Response, returns ""{"error":"String must contain at least 3 character(s)\nString must contain at least 6 character(s)"}"".
But it isn't displayed

Will have to take a look soon.


Update Ory components to latest

Update Hydra, Oathkeeper and Kratos with self service node UI to latest.

The scenarios are working as documented.


Fix generated app tests for latest packages

Needs a patch release once passing. Closes #109, #104

:shipit:


Added name to NoRefImageError

/cc @sipayRT @j0tunn

Actually, the only reason to have NoRefImageError was now dead referenceImageAbsence option. I think the error now can be just replaced with StateError

@SevInf  No, this specific error needed in gemini-gui in order to implement reference saving feature. So removing is not an option.

:ok:

ok


Fix different opcode width in python 3.6

Turns out that Python 3.6 uses different bytecode widths and this causes the function that checks stored CVs, etc to fail for python 3.6. I have checked this with python 2.7 and 3.6. And it works now. it also cleans up the code a little and the first toy mstis notebook is fixed. Hope this helps

The changes look good; could you add a nosetest to check this? (Shouldn't that be as easy as saving and reloading a CV object to make sure that it works?)
Is the reference to the Python bytecode change is the line "The Python interpreter now uses a 16-bit wordcode instead of bytecode which made a number of opcode optimizations possible" in  https://docs.python.org/3/whatsnew/3.6.html? (Want to have the reference here for either future me, or for anyone else who stumbles across similar problems.)

Not really sure. I was fiddling around and found some reference here
https://docs.python.org/3/library/dis.html#opcode-HAVE_ARGUMENT
Might try to do a test tomorrow. This is a problem in dictify.py:ObjectJSON._find_var and is purely disassembly stuff. And storing is tested in the notebook and there is a CV test that does that. But it requires to import a function inside the CV that is tested...

Not really sure. I was fiddling around and found some reference here

Ah, this is also clear that it is a 3.6 change. Good -- thanks for the reference.

Might try to do a test tomorrow.

Please do if you can. Right now only nosetests are included in the Python 3 Travis tests (as I slowly migrate notebooks over). Besides, nosetests count for coverage; notebook tests don't. It's helpful to know what might still be missing coverage, especially in these updates for Python 3.

Added a simple test that will check if CVs with imports inside will be correctly pickled.

Thanks! I just tested that this test raised the expected error in a version of the code running on 3.6 without these changes. It does. Changes all look good; merge once this passes tests.

Done

@dwhswenson

Great! Merging this; it's the last PR we need for the 0.9.3 release. I'll try to draft release notes tomorrow and hopefully that we can do the release in the next couple days!


Keypair's not removed when deleting cluster

hi,
i created a cluster named "testk8s" on AWS with my ssh-key "id_rsa". everything fine. then i did a kubicorn delete testk8s and the servers and clusters have gone.
after that i created a new cluster with the same name, but now i changed the publicKeyPath in the state file. when apply'ing everything is created but now kubicorn cannot fetch the configuration, because (at least at aws) there is a keypair named "testk8s" which was not removed when i deleted the old cluster. so the instances are created with my old key (from my first cluster), but kubicorn tries to connect with my new key.
solution: delete all ressources manually from AWS and also delete the Keypair. when creating the new cluster the keypar is recreated with the new keys.

As far as I know, SSH Keys are intentionally not removed, because they can be used by other resources on your account. There should be an environment variable to force key deletion, such as KUBICORN_FORCE_DELETE_KEY.
However the error shouldn't happen, and I can take a look to see what's going on. Currently there're some bugs with getconfig but I hope we'll be able to solve them as soon as possible.

Agree with @ulrichSchreiner - anybody care to PR this?


Terminal icon broken

Clicking on the terminal icon after the today update.

Brackets 1.4.0-0 (mac), Git 2.3.2 (Apple Git-55) & Brackets-Git 0.14.31
Error: Error: /Users/***/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/terminal.osa:524:610: execution error: Expected end of line but found class name. (-2741): osascript "/Users/federicozivolo/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/terminal.osa" "/Users/federicozivolo/Progetti/sysdigcloud/frontend/"

Error: Error: /Users/federicozivolo/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/terminal.osa:524:610: execution error: Expected end of line but found class name. (-2741): osascript "/Users/federicozivolo/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/terminal.osa" "/Users/federicozivolo/Progetti/sysdigcloud/frontend/"
    at file:///Users/federicozivolo/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/src/utils/Terminal.js:72:19
    at tryCatch1 (file:///Users/federicozivolo/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:4988:19)
    at Promise$_callHandler [as _callHandler] (file:///Users/federicozivolo/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:2333:13)
    at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (file:///Users/federicozivolo/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:2349:18)
    at Promise$_settlePromiseAt [as _settlePromiseAt] (file:///Users/federicozivolo/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:2521:14)
    at Promise$_rejectPromises [as _rejectPromises] (file:///Users/federicozivolo/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:2658:14)
    at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (file:///Users/federicozivolo/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:157:12)
    at Async$consumeFunctionBuffer (file:///Users/federicozivolo/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:120:14)
    at MutationObserver.Promise$_Scheduler (file:///Users/federicozivolo/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:4260:17)

cc @macbookandrew

Do you have iTerm installed and if so, what version?

I use iterm2

Can you go to the app, Get Info, and let me know what the specific version number is?

It's 2.1.1, the latest stable

There’s a newer version of Brackets Git; could you update and test again please?

Still the same error :(

Same error here, also have the 2.1.1 version of iTerm2
Brackets 1.4.0-16380 (mac), Git 2.3.2 (Apple Git-55) & Brackets-Git 0.14.32
Error: Error: /Users/***/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/terminal.osa:524:610: execution error: Expected end of line but found class name. (-2741): osascript "/Users/***/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/terminal.osa" "/Users/***/Development/snappin-signage-server/"

Error: Error: /Users/***/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/terminal.osa:524:610: execution error: Expected end of line but found class name. (-2741): osascript "/Users/***/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/terminal.osa" "/Users/***/Development/snappin-signage-server/"
    at file:///Users/***/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/src/utils/Terminal.js:72:19
    at tryCatch1 (file:///Users/***/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:4988:19)
    at Promise$_callHandler [as _callHandler] (file:///Users/***/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:2333:13)
    at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (file:///Users/***/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:2349:18)
    at Promise$_settlePromiseAt [as _settlePromiseAt] (file:///Users/***/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:2521:14)
    at Promise$_rejectPromises [as _rejectPromises] (file:///Users/***/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:2658:14)
    at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (file:///Users/***/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:157:12)
    at Async$consumeFunctionBuffer (file:///Users/***/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:120:14)
    at MutationObserver.Promise$_Scheduler (file:///Users/***/Library/Application%20Support/Brackets/extensions/user/zaggino.brackets-git/thirdparty/bluebird.js:4260:17)

Can you try changing the “Custom terminal command” filed in brackets-git settings from this:
/Users/***/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/terminal.osa
to this:
/Users/***/Library/Application Support/Brackets/extensions/user/zaggino.brackets-git/shell/iterm.osa
and see if it works? If not, please supply the error message.

it works

Ok…that’s just odd, because it’s running exactly the same script that terminal.osa was calling for.

yup also works for me :)