Proposal for a Simplified I18N Process

Update
The proposal that follows led to a new i18n system for Flutter applications. The new system is part of Flutter 1.19beta and will be part of the following stable release.
A user guide for the final system can be found here: https://flutter.dev/go/i18n-user-guide. A web tutorial is forthcoming.
Introduction
This is a proposal to provide a tool that simplifies setting up and maintaining an internationalized Flutter app. It is based on the Dart intl package. The overall goal is to reduce the number of steps required to use that package in an app with modest i18n requirements.
Current Internationalization Process
Currently, internationalized apps which are based on the intl package must follow a procedure similar to the one outlined in the stocks example. Roughly speaking there are 5 steps:

Add calls to the static Intl.message and Intl.plural methods where message strings are needed by the app.
Generate a template ".arb" (application resource bundle) file with intl_translation:extract_to_arb.
Make copies of the template ".arb" file for each supported locale, and add message translations.
Generate several source files which collectively encode all of the localizations using intl_translation:generate_from_arb.
Before the app starts, call initializeMessages() for each supported locale.

Proposal
The proposed approach is to start with handwritten ".arb" files. One of these files will contain the standard per-message metadata required by the intl package.
A new tool will be used to generate a single class that contains one method per message.
Message lookup is based on the inherited locale, using the current BuildContext:
MyLocalizations.of(context).myMessage()

The generated class will provide a LocalizationDelegate which is to be included in the app's list of localization delegates. The generated class itself will depend on intl package; the rest of the app doesn't have to.
This approach, based on segregating the app's localizations in a single class, is similar to the stocks example.
Prototype App and Tool
A prototype of the tool is https://github.com/flutter/flutter/pull/41432.
The main elements of the app, including the generated code, are as follows.
The English locale ".arb" file, lib/l10n/demo_en.arb defines the messages. The Spanish locale arb file, lib/l10n/demo_es.arb, just defines message translations.
The generated localizations class, DemoLocalizations in lib/1l0n/demo_localizations.dart, provides all of the messages.
The app includes DemoLocalizations.delegate in its localizationDelegates list, and looks up its messages with DemoLocalizations.of(context).

Have you seen this package https://github.com/timfreiheit/r_flutter?
Also just a thought wouldn't it even more comfortable if the input would be one cvs file with all languages in it that easy can be edited with any spread sheet application, so easy to give to translators.
Also have you seen https://marketplace.visualstudio.com/items?itemName=esskar.vscode-flutter-i18n-json
To make is really comfortable you should be able to directly create a new word entry from the IDE.

The target audience for this are people who doing their own translations by directly modifying the data files? I would have thought most people were using some sort of tool or translation service, but it seems not. Given that it seems reasonable enough. It seems important to consider migration issues when someone scales up to using a tool/service. I think they could probably still generate that way, but could this reasonably support multiple classes/multiple ARB files? Is that something people need/use in larger Flutter applications?
Intl doesn't currently handle formatting of parameters, so if you have something that takes a date or a number, you either have to format it before passing it in as a parameter or it will get the default format. So the rest of the app might still need to depend on intl for that.
Not directly relevant to this proposal, but Google Translator Toolkit, which is the primary thing that supported the ARB format is deprecated. We will really need to support at least one other format. There is a pending bug on intl_translation to make it so that anyone can write a reader/writer external to the package. There's also a converter someone wrote in JS, between ARB files and "Hierarchical JSON" format and it could probably handle others.
CSV files with Unicode in them makes me nervous of escaping issues, but there are a lot of formats. As above, being able to handle lots of them seems good, but we may want to recommend a default.
Does this/can this reasonably combine with the ability to use native translations on mobile platforms? So, would people be more comfortable with editing e.g. Android resource files directly?
There's been a bit of work ongoing on being able to read ICU MessageFormat strings at runtime and format them, as Closure does. That would be another alternative, although it's an entirely different (and much less typed) API so would be a significant change. And those would still have to be embedded in a file format.

@alan-knight what is the problem with CVS and Unicode?
I still think a format that can be read by office applications would make it much easier.
Another point not to forget is how can we support singular / plural versions of words in different languages?

It seems important to consider migration issues when someone scales up to using a tool/service. I think they could probably still generate that way, but could this reasonably support multiple classes/multiple ARB files? Is that something people need/use in larger Flutter applications?

The tool could definitely support generating multiple classes for different sets of ARB files.  That does seems like a nice kind of flexibility. I don't know if developers need that kind of support now, although I'm hoping we'll hear from them here.

Intl doesn't currently handle formatting of parameters, so if you have something that takes a date or a number, you either have to format it before passing it in as a parameter or it will get the default format. So the rest of the app might still need to depend on intl for that.

Yes, that's correct.

Not directly relevant to this proposal, but Google Translator Toolkit, which is the primary thing that supported the ARB format is deprecated. We will really need to support at least one other format. There is a pending bug on intl_translation to make it so that anyone can write a reader/writer external to the package. There's also a converter someone wrote in JS, between ARB files and "Hierarchical JSON" format and it could probably handle others.
...
Does this/can this reasonably combine with the ability to use native translations on mobile platforms? So, would people be more comfortable with editing e.g. Android resource files directly?

The ARB format isn't essential to this proposal, however it's what we've recommended that Flutter developers use to date. We could support native message catalog formats, per https://github.com/flutter/flutter/issues/37031, as well.

There's been a bit of work ongoing on being able to read ICU MessageFormat strings at runtime and format them, as Closure does. That would be another alternative, although it's an entirely different (and much less typed) API so would be a significant change. And those would still have to be embedded in a file format.

It would be nice to support a platform-independent and widely accepted standard. Assuming that the right API to expose to an app was still a set of methods that returned strings, supporting ICU (or ICU too) sounds like a win.

Hi! I'm all for handwritten message files and code generation. The compile-time check of the message existence is great. But don't forget that occasionally you need to decide the message at runtime, maybe like this:
var vehicleTypeMessageKey = "VehicleType.${data['type']'}";
... so having just generated methods is not enough.
You will find a few more ideas like this in my internationalization package :-)
https://pub.dev/packages/i69n

Hello, I hope you're all well. Thanks for your work on Flutter btw. It's an awesome piece of tech and I wish I had Flutter when I was co-founding a mobile app startup years ago. I was recently emailed by @HansMuller, who asked me to chime in. I research and write about i18n. I wrote an article on Flutter + Intl last year (I think that's how Hans found me).
I think this is a good proposal because the current Intl workflow is a bit clunky for smaller projects. This is especially true for projects that don't have automation and sophisticated tooling around i18n. Given this leaner alternative, I think two main pain points from a developer  perspective warrant a look:

Reducing manual script running as much as possible
Using quick, lean file formats for messages that can be easily shared with translators

RE reducing manual script running, I've always wondered while using Flutter + Intl if there could be a watcher that generated and updated message files on the fly while developing. I've actually never seen this in any i18n library and I've always wanted it. I don't know how feasible this is given available Dart code analysis tools VS what would need to be written from scratch for such a watcher.
As for file formats, there are a few I think worth considering (not exclusively, of course, just ones that come to my mind):

ICU
PO
CSV
JSON
YAML

ICU and PO are widely used. PO has good adoption among i18n tools and platforms for developers & translators. For a smaller team, however, I think the overhead of generating and compiling ICU or PO is more of a hassle than its worth. The other options are much more lean and to-the-point for smaller projects.
 CSV headers can be far removed from their respective values, which can make managing messages tricky. Think of a plural message in Arabic with the language's 6 plural forms. How could a developer tell them apart? You could add an identifier to each message component, but that would take away from translators' experience.
JSON would be nice for us coders, but it may be a bit of a hassle for translators.
YAML could be a nice in-betweener for both programmers and translators. YAML has a nice, intuitive syntax with significant white space that I think would be picked up easily by translators. It also allows for various types and hierarchies, which make it flexible enough accommodate plural forms and more complex messages.
It could be worthwhile to pull in some translators that work in software and get their thoughts. They may well have their own bread-and-butter tools that, say, work well with JSON and have wide adoption. In that case JSON would be a very attractive option since we'd really only be solving the developer's problem, not the translators'.
These are my two cents so far. I hope they help a bit.

@tomucha - Thanks for the feedback. I think we've taken a similar approach to simplifying building i69n applications :-).

But don't forget that occasionally you need to decide the message at runtime, maybe like this:
var vehicleTypeMessageKey = "VehicleType.${data['type']'}";
... so having just generated methods is not enough.

I agree that this sort of thing isn't necessary to solve with generated methods. I would think the app would have to include a method that switched on vehicleTypeMessageKey and returned a localized string.
String vehicleType(String vehicleTypeMessageKey) {
  final MyLocalizations localizations = MyLocalizations.of(context);
  switch (vehicleTypeMessageKey) {
    case 'sedan': return localizations.sedan();
    case 'truck': return localizations.truck();
    ...
  }
}

At this point i69n generates the exact switch statement you are suggesting ;-)

@ashour what's wrong with .arb files? Flutter already uses them, and they are esentially jsons.
@HansMuller I agree that current state is a mess. Did you consider doing flutter generate builder package? I implemented this in r_flutter and it worked decently well (although IDE & analyzer are not really prepared to handle it). Such package could be eventually embraced by flutter team.

@ashour - Your article on internationalizing Flutter apps is an excellent introduction to this topic!

I think two main pain points from a developer  perspective warrant a look:

Reducing manual script running as much as possible
Using quick, lean file formats for messages that can be easily shared with translators

RE reducing manual script running, I've always wondered while using Flutter + Intl if there could be a watcher that generated and updated message files on the fly while developing. I've actually never seen this in any i18n library and I've always wanted it. I don't know how feasible this is given available Dart code analysis tools VS what would need to be written from scratch for such a watcher.

That's an excellent point. We can definitely do this, even in the context-of hot-reload, in roughly the same way that Flutter handles asset changes.

As for file formats, there are a few I think worth considering (not exclusively, of course, just ones that come to my mind):

ICU
PO
CSV
JSON
YAML

Currently the "ARB" format, which is used by the Dart intl package and the proposed tool, is mostly just a JSON container for a collection of ICU messages. Additional support (beyond what's in the prototype) for dates, currencies, numbers, gender would move us from the realm of "modest" i18n Flutter apps, to more ambitious ones. I think that would be a good direction to take in the long run.
Support for other message catalog formats came up earlier. We could support other formats with additional code generators or perhaps with a scheme that converts other formats to a common one. XLIFF is another popular alternative.

These are my two cents so far. I hope they help a bit.

Thanks for your feedback!

@szotp - thanks for your feedback.

I agree that current state is a mess. Did you consider doing flutter generate builder package? I implemented this in r_flutter and it worked decently well (although IDE & analyzer are not really prepared to handle it). Such package could be eventually embraced by flutter team.

I'll take a look at r_flutter.

Looking back when I did.Net programming there was a powerful free Application to manage the resource files including text resources in different languages. That could also in and export different formats.
So the used format might not be so important for users if someone writes a flutter desktop app for this.
So maybe

Dart has a lot of things that rely on code generation and mechanisms for automatically re-generating on changes, e.g. build_runner. So I would expect automating that to be fairly easy. But I don't think anything is integrated with flutter right now, so I guess you would have to manually run build_runner on the side and have it watch the files.

I don't think we want to require a dependency on build_runner to generate translations.

No, build_runner is pretty heavy for that. But I don't think it would be difficult to do something custom that did file watching and triggered a re-generate, or to use other mechanisms.

Just one thing that came to my mind. If this gets sort of service think about adding an interface that can be easily used by the IDE extensions for VS code and IntelliJ.
With a function in the editor to insert a new identifier together with a default language that then creates an entry in the ARB(or whatever) files would make you really productive with internationalisation.

Hi guys,
I want to share this with you https://github.com/long1eu/flutter_i18n . Works great in Android Studio. I've been using that plugin for about 1 month. Just like the old days when developing Android (especially for alt+enter feature to extract string) :)

Simplified I18N Process
Can this task also take care of updating the info.plist about the supported languages so that we won’t have to do it manually for iOS?

@bitsydarel That's a good idea; yes (https://github.com/flutter/flutter/issues/43041#issuecomment-544565791)

Reading the proposal i have few questions and proposal.
1- Why not sticking with arb and just make the files generation and intl initialization process almost inexistant?
Arb it’s used in many translation tools and it’s actually a popular format with many features.
Using csv, json, xml we will have to specify a way of defining plurals, gender and ect.
2- keep the way users specify the properties to be translated  (custom Localization class with properties forwarding to intl.message).
3- automate the creation of arb file template and the one for each languages that’s defined in the supportedLanguages property of the widgetsApp.
In other languages arb files, let the translation empty so users can fill it.
4- generate the binding code to initialize intl.
5- generate the delegates that will load our localization class and initialize intl.
this allow us as developer to only create the localization class and the properties and all the rest is generated for us and no ide required.
Why not using build_runner ?
I can’t think of a real production app that does not use code generation... most of the libraries we daily use, use them, json code generation, SQLite and more.
Using build_runner watch, would allow us to interactively update the arb files while we are developing our app, which is amazing for programmer experience and better than native solutions.

I personally would vote for native support for PO files (generating to/from dart code), but I guess it would be quite trivial to have a json/po converter. I've got used to PO files from python/django and it seems it has a pretty wide range of tools available (e.g. poedit, transifex, etc.).
In my dream setup the source of truth for string keys would be the dart code.  Similar to right now. So during development there is no need to update PO files immediately. Once code is done, extract to PO files, translate the PO files and then generate resulting dart code from those po files.
Imo even in trivial apps it would be very much helpful to allow easy separation into multiple classes. Having all app strings in one file/class can get pretty crowded pretty soon.

You can already use multiple localizations classes @hpoul
The framework only require you to provide delegates for them.
class DBAssistantLocalizations {
  /// List of locale supported by [DBAssistantLocalizations].
  static const List<Locale> supportedLanguages = <Locale>[
    Locale.fromSubtags(languageCode: "en"),
    Locale.fromSubtags(languageCode: "ru"),
    Locale.fromSubtags(languageCode: "uk")
  ];

  /// Get an instance of [DBAssistantLocalizations] from the current [context].
  static DBAssistantLocalizations of(final BuildContext context) =>
      Localizations.of<DBAssistantLocalizations>(
        context,
        DBAssistantLocalizations,
      );

  // ignore: public_member_api_docs
  String get appTitle => Intl.message(
        "DBAssistant",
        name: "app_title",
        desc: "the application title",
      );

  // ignore: public_member_api_docs
  String get profile => Intl.message(
        "Profile",
        name: "profile",
        desc: "Represent user profile",
      );

  // ignore: public_member_api_docs
  String get high => Intl.message(
        "High",
        name: "high",
        desc: "adjective especially of things that are not living",
      );

  // ignore: public_member_api_docs
  String get medium => Intl.message(
        "Medium",
        name: "medium",
        desc: "being in the middle between an upper"
            " and lower amount, size, degree, or value",
      );

  // ignore: public_member_api_docs
  String get low => Intl.message(
        "Low",
        name: "low",
        desc: "adjective below the usual level",
      );

  // ignore: public_member_api_docs
  String get lists => Intl.message(
        "Lists",
        name: "lists",
        desc: "feature of the app",
      );

  // ignore: public_member_api_docs
  String get news => Intl.message(
        "News",
        name: "news",
        desc: "feature of the app",
      );

  // ignore: public_member_api_docs
  String get tv => Intl.message(
        "Tv",
        name: "tv",
        desc: "feature of the app",
      );

  // ignore: public_member_api_docs
  String get couldNotRetrieveWeatherInfo => Intl.message(
        "Could not retrieve weather information",
        name: "couldNotRetrieveWeatherInfo",
        desc: "Message that for some reason weather date could not be retrieve",
      );

  // ignore: public_member_api_docs
  String get noShoppingLists => Intl.message(
        "You currently don't have any shopping lists",
        name: "no_shopping_lists",
        desc: "The message for when the user does not have any shopping lists",
      );
}

class DBAssistantDateTimeLocalizations {

  /// Get an instance of [DBAssistantDateTimeLocalizations]
  /// from the current [context].
  static DBAssistantDateTimeLocalizations of(final BuildContext context) {
    return Localizations.of<DBAssistantDateTimeLocalizations>(
      context,
      DBAssistantDateTimeLocalizations,
    );
  }

  // ignore: public_member_api_docs
  String years(int years) => Intl.plural(
        years,
        one: "$years year",
        other: "$years years",
        name: "formatted_years",
        desc: "year formatter base on the amount of years",
      );

  // ignore: public_member_api_docs
  String months(int months) => Intl.plural(
        months,
        one: "$months month",
        other: "$months months",
        name: "formatted_months",
        desc: "month formatter base on the amount of months",
      );

  // ignore: public_member_api_docs
  String days(int days) => Intl.plural(
        days,
        one: "$days day",
        other: "$days days",
        name: "formatted_days",
        desc: "day formatter base on the amount of days",
      );

  // ignore: public_member_api_docs
  String hours(int hours) => Intl.plural(
        hours,
        one: "$hours hour",
        other: "$hours hours",
        name: "formatted_hours",
        desc: "hour formatter based on the amount of hours",
      );

  // ignore: public_member_api_docs
  String minutes(int minutes) => Intl.plural(
        minutes,
        one: "$minutes minute",
        other: "$minutes minutes",
        name: "formatted_minutes",
        desc: "minute formatter based on the amount of minutes",
      );

  // ignore: public_member_api_docs
  String get fewMoments => Intl.message(
        "few moments",
        name: "few_moments",
        desc: "refer the time elapsed since an event",
      );

  // ignore: public_member_api_docs
  String getLastChanges(final String elapsedTime) => Intl.message(
        "Last changes: $elapsedTime ago",
        name: "last_changes_formatted",
        desc: "Display the last time a change occured on a object",
        args: [elapsedTime],
        examples: const {"elapsedTime": "2h"},
      );
}

And ARB has many features that PO does not support.

@bitsydarel

You can already use multiple localizations classes

I wasn't disputing that, just wanted to raise that issue because the current proposal mentions:

A new tool will be used to generate a single class that contains one method per message.

not sure how much emphasis was on that "single class"..

@bitsydarel per https://github.com/flutter/flutter/issues/41437#issuecomment-544647725

1- Why not sticking with arb and just make the files generation and intl initialization process almost inexistant?

Although, in the fullness of time, we hope to provide support for other formats, initially we'll support the arb format.
The "Proposal" section of this issue begins with "The proposed approach is to start with handwritten ".arb" files."

2- Keep the way users specify the properties to be translated (Custom Localization class with properties forwarding to intl.message).

That is similar to what's being proposed here. However in this case the custom localization class is generated rather than hand written. See for example, the code generated by the prototype  is based on the sample .arb file.

3- Automate the creation of arb file template and the one for each languages that’s defined in the supportedLanguages property of the widgetsApp.

In this proposal the template arb file is generated by hand. With some IDE integration, we could simplify creating it. Simiarly, we could generate copies of the template arb file, per supported locale.

4- generate the binding code to initialize intl.
5- generate the delegates that will load our localization class and initialize intl.

We are in fact proposing to do this and to do so automatically, when the .arb files change.
I think the main difference between what you're suggesting and what has been proposed is the starting point. We're proposing to start with .arb files, since they're the source of localizations, and generate the rest.

@hpoul per https://github.com/flutter/flutter/issues/41437#issuecomment-544653694

I personally would vote for native support for PO files (generating to/from dart code)...

In the fullness of time, we hope to provide support for other formats, initially we'll support the arb format.

Imo even in trivial apps it would be very much helpful to allow easy separation into multiple classes. Having all app strings in one file/class can get pretty crowded pretty soon.

Making it possble to generate more than one localization class sounds like a good idea.

Ho so then i did not fully understand the proposal and I’m happy all the other suggestions are already covered by the initial proposal.
About the starting point, If we have to start by creating an initial arb file this require knowledge of the arb specifications and format.
Which is definetly overwhelming for beginners, people who would like to quickly integrate localization for their apps and someone coming from another platform.
That's why i suggested that it's should be generated based on the content of the custom localization class because this is just dart code that the programmer is already familiar with.
So me as a programmer i just have to worry about writing my custom localization class.
Now for the copies of the template arb for each supported locale, since they would already be generated and pre-filled.
I would just have to fill the translated value i have gotten from a trusted source example: Google translate, translations team, ect.

@HansMuller If in the futur you plan on adding support for other formats, the suggested flow would require less work on the developer side because the only changes would be the type of files generated and how the IDE plugin or generator will handle the binding.

@HansMuller Now that i think of it, the only issue i see with my suggestion is if let say we add support for PO files or any other format, if the developer wrote the custom localization class property using Intl.message, Intl,plural, ect. Can we still do the binding (Intl initialization) properly ? Or is Intl depending on ARB ?
If Intl is depending on ARB then your proposal is better because with your approach it's does not matter which file format we use, at the end we only need that the custom localization class is properly generated and with proper bindings or initialization so that we could do:
MyLocalizations.of(context).myMessage()

This issue was shown to me by @escamoteur.
I'd like to share with you my approach to translations. I just published it yesterday. It uses the new Dart extensions: https://pub.dev/packages/i18n_extension
Suppose you have this: Text("Hello") and you want to translate it to the current locale. You just need to add .i18n to the string, like this: Text("Hello".i18n).
This would display "Hola" is the locale is Spanish, "Olá" if it's Portuguese, and so on. You can also have plurals, using the .number() modifier. For example Text("There is %d dog".number(2)) will display "There are 2 dogs". And you can create your own custom modifiers, for things like genders etc.
It's specially easy to use for small projects, where you are doing your own translations.
But it also works well for large projects (like the one I'm involved in, which will use this).
In more detail, you have a dart file that creates a Translation object, and this object is optimized for easily creating translations by hand. But it creates them from maps. So if you can create maps from some file you can use that file. In other words, it's very easy to import AND export from/to .json,, .arb etc.
Also, there is no need for build_value.

@bitsydarel per https://github.com/flutter/flutter/issues/41437#issuecomment-544744428

... the only issue i see with my suggestion is if let say we add support for PO files or any other format, if the developer wrote the custom localization class property using Intl.message, Intl,plural, ect. Can we still do the binding (Intl initialization) properly ? Or is Intl depending on ARB ?

The Dart intl package depends on the ARB format. That's why this proposal is based on ARB, at least by default. We could support other formats, possibly by converting them to ARB. In that case ARB would just be an intermediate format.

If Intl is depending on ARB then the current proposal is better because the current proposal it does not matter which file format we use, at the end we only need that the custom localization class is properly generated and with proper bindings or initialization so that we could do:
MyLocalizations.of(context).myMessage()

It's true that we could support other formats directly, by generating a MyLocalizations class that did the work for plurals, genders, numbers, currencies, dates/times, etc that the Dart intl package does. That is in fact what the flutter_localizations package does for the Flutter SDK.

@marcglasberg per https://github.com/flutter/flutter/issues/41437#issuecomment-545579966
Using static extension methods for simple message translation is a nice idea and it does look pretty slick. Personally, I'm a bit leery of static extensions methods in libraries because, with heavy use, they can make code difficult to read. Glad to hear that it's working for your project!

@HansMuller Instead of your Localization class having ARB as an intermediate format, it could instead have some simple map based format in memory. Then you could define an Importer interface, and anyone could then create importers to any formats. ArbImporter could be the first importer.
This would make it easy to create importers, so that people could choose their own formats, or even publish packages with importers.
Also that would allow for any other internalization libraries like my own to actually use these same importers. For example, in my lib I would call the same ArbImporter to create the in memory format, and then it's easy for me to convert from memory to my own format.
In other words, these importers would become reusable code for other internalization libraries.

@marcglasberg per https://github.com/flutter/flutter/issues/41437#issuecomment-546544973

Instead of your Localization class having ARB as an intermediate format, it could instead have some simple map based format in memory.

I agree, that would be much better.

Hi all, I've created the tool with @HansMuller's original proposal. All feedback and ideas are welcome. You can also comment on the PR https://github.com/flutter/flutter/pull/43934 if there are any questions or concerns.
Tool Functionality
Starting with arb files in lib/l10n, the tool creates the following by default:

An AppLocalizations class containing:

an AppLocalizationsDelegate
a supportedLocales property that returns a list of all supported locales.
a localizationsDelegate property that returns a list containing this delegate along with GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, and GlobalWidgetsLocalizations.delegate.

One Dart message_<locale>.dart file for each arb file, as well as a messages_all.dart file that performs the locale message lookup. The tool infers the locale of each arb file from the @@locale property and the arb file's name.
All feedback and ideas are welcome. You can also comment on the PR https://github.com/flutter/flutter/pull/43934 if there are any questions or concerns.
Once the tool is done running, all you would to do is modify the MaterialApp.localizationsDelegates and MaterialApp.supportedLocales properties.

Tool Demo

Go to https://github.com/shihaohong/i18n_exploration and clone down the repo.
From the project root directory, run:

dart ${FLUTTER_DIR}/dev/tools/localization/gen_l10n.dart

Note that the above files have been generated in the ${PROJECT_REPO}/lib/l10n folder.
The modifications to the app to accept localizations have already been added, but typically, you'd have to make the following changed to your app:

import 'l10n/app_localizations.dart'; // add this line
// ...
class I18NDemoApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: AppLocalizations.localizationsDelegates, // add this line
      supportedLocales: AppLocalizations.supportedLocales, // add this line
      home: Home(),
    );
  }
}

You should then be able to access localized messages depending on the locale of your simulator or physical device:

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            Text(AppLocalizations.of(context).helloWorld),
            Text(AppLocalizations.of(context).hello('International World')),
            Text(AppLocalizations.of(context).greeting('Greetings', 'Earthlings')),
            Text(AppLocalizations.of(context).helloWorlds(100)),
          ],
        ),
      ),
    );
  }
}

Tool Options
There are a couple of modifiable options for the tool:

--arb-dir: the path to your l10n directory. The tool defaults to /lib/l10n/.
--template-arb-file: the arb file to use as a template to generate these files. The tool defaults to app_en.arb.
--output-localization-file: The filename of the Dart file containing your localization and localizations delegate classes. The tool defaults to app_localizations.dart.
--output-class: The Dart class name to use for your localization class. The tool defaults to AppLocalizations.

I've added proposals to a new GitHub issue to how we could handle DateTime, Numbers and Currencies to the tool.
Please take a look and provide any feedback, suggestions, or nice-to-haves you'd like to see if you have any :)

We published Flutter Intl extension for VS Code that watches ARB files and generates localization code automatically.
So after adding string keys to ARB files, key getters are immediately available for autocomplete in Dart code.
Would like to hear your feedback, suggestions...

I just added an enhancement to the tool to support a preferred locales option. By default, the supported locale list is sorted by alphabetical order. This option allows developer to set a prioritized list of locales to be placed at the beginning of the list over the rest of the sorted locales.

I looked over the PR for generating the AppLocalizations class, it doesn't seem like it supports locales with a scriptCode. We have a few different locales we use as a "custom" language pack.
i.e., intl_en_instukhe_GB.arb would have the locale:
Locale.fromSubtags(languageCode: 'en', scriptCode: 'instukhe', countryCode: 'GB')
We were able to get this by overriding our AppLocalizations class to check for these locales when isSupported is called, as well as providing these custom locales to the MaterialApp's supported locales.
Does this simplification of generating AppLocalizations remove the support for custom language handling?

Support for ARB is coming to more and more tools as this is the default for Flutter. Recently there was new open source tool announced called Arbify. This is a self-hosted tool that can be run in Docker container, supports multiple projects, plural and genders.

@orestesgaolin - thanks for the pointers and for the reminder that it's time to acknowledge that the work proposed in this PR has been completed. The last i18n tooling change was https://github.com/flutter/flutter/pull/57510, and the completed system part of 1.19 beta and will land in the next stable release as well.
There's a user guide here: https://flutter.dev/go/i18n-user-guide

@HansMuller when can we expect the next stable release which will include this?

@csells - can you let @jbojcic1 et al. know when to expect the next stable release?

@jbojcic1 we haven't announced the next stable release, but you should expect it in the next month or two.

@shihaohong and @HansMuller
Error: Could not resolve the package 'args' in 'package:args/args.dart'.
When following this guide https://flutter.dev/go/i18n-user-guide step-by-step (on the beta channel), I ran into the same problem as described in https://github.com/flutter/samples/issues/331
Running: flutter update-packages in ~/development/flutter/packages/flutter, solved it for me.
https://github.com/flutter/samples/issues/331#issuecomment-587891674

Running flutter update-packages in the SDK is not really a solution. Especially in CI when switching between Flutter versions a lot. This should be fetched when installing by default.

@kuhnroyal

I need to manually run pub get in flutter/dev/tools for the generator to work - Will this automatically be installed in the future? Since the whole process starts by itself when I add the i10n.yaml file, I would expect it to be ready to use at that point.

I'm currently looking into fixing this. This is a result of the gen_l10n tool itself being a package, which is why it requires a pub get call since its dependencies have changed between flutter versions. I'm looking into seeing if I can pre-compile the dependencies with the tool itself so that it does not require re-caching and updating its dependencies.

What is the recommendation for the generated Dart files, should they be committed to VCS?

If you're going the synthetic package route (which we're trying to make the default way of doing things through https://github.com/flutter/flutter/pull/62395), then the goal is that generated Dart files will not need to be committed to VCS. If you'd still prefer to check in the generated code into VCS, you can turn off the synthetic package option with the ways mentioned in the PR depending on whether you're using an l10n.yaml file or running the tool directly via the command line.

@shihaohong Thanks for the clarification and your work on this!
I would love to not commit the generated files but in my initial tries I ran into problems running flutter test in CI. The files are not generated before running tests, that would currently leave me with the option to run the tool directly beforehand or committing the files.
Are the plans to make this tool available as generator so it can be tied into a build_runner call?

@kuhnroyal Actually, the current issue I'm trying to resolve is getting flutter analyze to figure out this situation. What's happening is that flutter analyze fails sometimes because the l10n code had not been generated beforehand. So, I'm trying to get flutter analyze to run flutter pub get as a step (which I'm trying to have call the synthetic package generation code) so that it does not fail for this reason.
I had not considered that if would fail with flutter test. Could you share more about the kind of problems you're running into? Also, what does build_runner do with code generation that you would like to see? (I'm not as familiar with using build_runner).

@shihaohong From my understanding with the synthetic route (i10n.yaml) I would not commit the files to VCS. When I checkout a project I am usually able to run flutter pub get and flutter test which would compile the code and run the tests. But now the localization files are missing as they are only being generated during flutter run/build so the tests don't compile.
The question about build_runner is related to my test problem. Many projects use build_runner generators to generate code, mostly *.g,dart files for all kinds of libraries, built_value, moor, freezed and lots of other i18n libraries. In most cases the *.g.dart files are also not committed so that a dedicated build step is required before running tests or building the project (flutter pub run build_runner build) and many CI pipelines in a lot of projects already use this. There is already an established config file format build.yaml via https://pub.dev/packages/build_config. I was just wondering if there are plans to provide a generator for build_runner.

@kuhnroyal Great, thanks for the feedback/explanation! I'll take a look into how we can address that in the next few days. I might create a separate issue to track it as well since this one is already closed and will loop you in once I do that.

@kuhnroyal My synthetic package PR (https://github.com/flutter/flutter/pull/62395) incorporates synthetic package generation into flutter test and flutter analyze invocations when flutter pub get is required, so that should address the issue you mentioned with running tests and compiling code.
As for providing a generator for build_runner, we're currently not planning on incorporating synthetic package generation into build_runner, but this shouldn't be a problem as long as there isn't a problem with the synthetic package generation code. Please feel free to file a new issue highlighting any concerns or problems you face with the gen_l10n tool, I'd be happy to look into and try to address them.

https://flutter.dev/go/i18n-user-guide

I noticed the output-dir parameter from the docs doesn't exist in code

@Sominemo  Thanks for the heads up! I need to make some updates to the user guide, some of the instructions have changed with some updates to gen_l10n.

@shihaohong Did this make it into the new beta?

Yes, it looks like the synthetic packages commit made it into beta.

@shihaohong The synthetic package seems to break build_runner as it finds the .dart_tool/flutter_gen folder and expects a pubspec.yaml there.
Bad state: Unable to generate package graph, no `/Users/foo/workspace/test/.dart_tool/flutter_gen/pubspec.yaml` found.
#0      _pubspecForPath (package:build_runner_core/src/package_graph/package_graph.dart:235:5)
#1      _parsePackageDependencies (package:build_runner_core/src/package_graph/package_graph.dart:208:21)
#2      PackageGraph.forPath (package:build_runner_core/src/package_graph/package_graph.dart:97:33)
<asynchronous suspension>
#3      PackageGraph.forThisPackage (package:build_runner_core/src/package_graph/package_graph.dart:110:20)
#4      main (file:///Users/foo/.../build_runner-1.10.2/bin/build_runner.dart:27:49)
#5      _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32)
#6      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
pub finished with exit code 255

@kuhnroyal The first issue you mentioned was also mentioned/filed in https://github.com/dart-lang/build/issues/2835.
For the next two, could you create separate issues for them and tag me? It's easier for us to keep track of new issues with the tool that way since these problems can get lost in this issue's comment thread.


Upload *.csproj

Heya, can you please add the .csproj? To check how the additional files (fonts, images) are compiled (resource? Embedded resource? etc)

you can unzip source folder file   "Page Navigation App.rar"

you can unzip source folder file "Page Navigation App.rar"


: Unit = formatting

If I have an interface like this in java:
public interface Plugin<T> {
    void apply(T target);
}

If I override this in kotlin:
class PluginImpl : Plugin<Cat> {
    override fun apply(target : Cat) : Unit =
        doSomething(target)

    private fun doSomething(target: Cat) : String {
        // Do some other complex logic...
        return "Cat"
    }
}

The compiler requires you to have the return type of Unit or it won't compile.

@JLLeitschuh I believe you meant (something similar to)
class PluginImpl : Plugin<Cat> {
    override fun apply(target : Cat) : Unit =
        target.run { doSomething(target) }

    private fun doSomething(target: Cat) : String {
        // Do some other complex logic...
        return "Cat"
    }
}

(without target.run { ... } it won't compile due to Type Mismatch: Required Unit, Found String (at least using koltin-compiler@1.1.3-2)).
Anyway, I'm actually surprised that
    override fun apply(target : Cat) : Unit =
        target.run { doSomething(target) }

compiles fine when
    override fun apply(target : Cat) : Unit =
        doSomething(target)

doesn't (return type of target.run { doSomething(target) } and doSomething(target) is the same after all = String).
Given this inconsistency I think it fair to say that we have one more reason for not allowing explicit : Unit return type (unless I'm missing something of course). In other words,
    override fun apply(target : Cat) : Unit =
        target.run { doSomething(target) }

should be changed to
    override fun apply(target : Cat) {
        target.run { doSomething(target) } // target.run { } is obviously not necessary here
    }

(feel free to reopen if I missed something)

You may be right.
The example that I have might be wrong.
Here's an example where I know the behaviour.
This compiles fine:
class KotlinScriptBasePlugin : Plugin<Project> {
    override fun apply(project: Project) : Unit =
        project.run {
            rootProject.apply<KotlinScriptRootPlugin>()
            task<PrintAccessors>("kotlinDslAccessorsReport")
        }
}

This does not compile:
class KotlinScriptBasePlugin : Plugin<Project> {
    override fun apply(project: Project) =
        project.run {
            rootProject.apply<KotlinScriptRootPlugin>()
            task<PrintAccessors>("kotlinDslAccessorsReport")
        }
}

This is under kotlin version 1.1.4-3

My point is - it shouldn't, because
class KotlinScriptBasePlugin : Plugin<Project> {
    override fun apply(project: Project) : Unit =
        task<PrintAccessors>("kotlinDslAccessorsReport")
}

won't (see my previous comment).
Notice that return type of
project.run {
    rootProject.apply<KotlinScriptRootPlugin>()
    task<PrintAccessors>("kotlinDslAccessorsReport")
}

and
task<PrintAccessors>("kotlinDslAccessorsReport")

is the same (Task?).
To me it looks like something is wrong with type inference.
Replace : Unit with { ... } and you should be good to go.

Huh... Interesting.
So this does not compile:
class KotlinScriptBasePlugin : Plugin<Project> {
    override fun apply(project: Project) : Unit =
        project.task<PrintAccessors>("kotlinDslAccessorsReport")
}

I think what the compiler is secretly doing is turning this:
project.run {
    rootProject.apply<KotlinScriptRootPlugin>()
    task<PrintAccessors>("kotlinDslAccessorsReport")
}

Into this:
project.run {
    rootProject.apply<KotlinScriptRootPlugin>()
    task<PrintAccessors>("kotlinDslAccessorsReport")
    return
}

I would guess that this is so that you can write small lines of code like that and not have to worry about adding a return statement at the end.

As it stands this does compile:
class KotlinScriptBasePlugin : Plugin<Project> {
    override fun apply(project: Project) : Unit =
        project.run {
            rootProject.apply<KotlinScriptRootPlugin>()
            task<PrintAccessors>("kotlinDslAccessorsReport")
        }
}

Any code formatter should have the behaviour of taking an input that compiles and returning an output that also compiles. This is not currently the behaviour of ktlint in this case.

@JLLeitschuh fair enough

So basically what we need to do is: make https://github.com/shyiko/ktlint/blob/master/ktlint-ruleset-standard/src/main/kotlin/com/github/shyiko/ktlint/ruleset/standard/NoUnitReturnRule.kt rewrite : Unit =  to { ... }

I would argue that's not the correct solution. The correct solution in my mind would be to not remove the Unit return if the method if the method uses the = notation.
A little bit more explicitly:

: Unit {} In this case Unit should be removed
: Unit =  in this case Unit should not be removed as doing so changes the return type of the method. If the Unit is removed in this case then the formatter is changing the method signature.

If we try to go down your route by adding { ... } then you have to get into the business of getting the indentation correct for code inside of that block. That seems like a path that is going to lead to nothing but pain and suffering.

@JLLeitschuh I agree

Fixed in 0.9.2 (should become available through Maven Central within the next ~25min).
Thank you, as usual :wink:


docs: Document and advocate systemd for WSL 2.

systemd makes it a lot convenient to run services required for Zulip's development environment on WSL 2. Once enabled, tools/start_service becomes unnecessary.
More info:
https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/

Screenshots and screen captures:

Self-review checklist

[ ] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[ ] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Can we simplify things by requiring systemd support and deleting tools/wsl/start_services?

I'd be on board with that as a plan -- and then we should get a few people from chat.zulip.org to test before merging.


Can we have one header template for all columns header f-table-schema

Is your feature request related to a problem? Please describe.
currently, we need to provide the same template for all column headers.
Describe the solution you'd like
Can we have a common header template if we have the same template for all column headers?
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context

@VivekY1098
We have :header-cell-template.prop on f-table-schema.

@VivekY1098
Please refer this story for more context
https://flow.cldcvr.com/v2/index.html?path=/story/cldcvr-flow-table-f-table-schema--header-cell-template


⚠ Bofrost.es has degraded performance

In 0622c2e, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1476 ms

Resolved: Bofrost.es performance has improved in 9998e38 after 6 minutes.


fix: Update http error code from 400 to 403 for permission error

SUMMARY
When user doesn't have enough permission to access a resource, http error code 403 should be returned instead of 400.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TEST PLAN

ADDITIONAL INFORMATION

[x] Has associated issue: #13060
[ ] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

Hi @duynguyenhoang thanks for the PR again! We actually have a design page for most of the errors if that's helpful
@steejay

Here is the link to the figma page for errors 404, 500 and 403. Feel free to comment by hitting 'C' on your keyboard and placing a comment anywhere in the document.
https://www.figma.com/file/el48F3KQ9u6rtKmdZvdb36/Error-Pages?node-id=59%3A417


Openglfx com.sun.prism.d3d  conflicts with javafx-graphics/com.sun.prism.d3d

Describe the bug
com.sun.prism.d3d is provided by both openglfx and javafx-graphics
To Reproduce
[N/A]
Screenshots

Environment:

OS: [Windows/Mac]
openglfx version: [4.1.1]

Yes, openglfx contains JavaFX packages to access some package-private fields without reflection.
With a modular system, there is a choice of two evils - adding reflection openings or packages.
I don't know much about modules, so I probably won't be able to help

Why not use reflection or possibly change the package name.  It is always used with JavaFX, I don't think conflicting with its names is a good idea. Is there very good reason not using reflection?

Reflection creates a lot of problems with modules, as well as with compilation using GraalVM (Gluon). Therefore, in the current version, I tried to replace any reflection with JNI, or in such tricks with packages.
I can't just "rename" the package. It will lose access to JavaFX's package-private fields/classes/functions.
I understand that this isn't the most elegant option. I'll see how can I avoid it

I can confirm that I build the version 4.0.5 to native image with graalvm without problems

I can confirm that I built the version 4.0.5 to native image with Graalvm without problems.

I have completely removed the use of javafx packages.
There will be a fix release this weekend.

Released 4.1.4 - removed package-hacks and added module-info


Chore: update go version

try building with go 1.18
Related to issue https://github.com/grafana/grafana-iot-twinmaker-app/issues/49

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.:x: ryantxu:x: lean257You have signed the CLA already but the status is still pending? Let us recheck it.

We no longer need this PR as we are now releasing with go 1.18


update wezterm toml files to include metadata

Please add a metadata section to your wezterm toml files; a block like this:
[metadata]
name = "Nightfox"
author = "EdenEast"
origin_url = "https://github.com/EdenEast/nightfox.nvim"

added to the bottom of each will allow wezterm to reference the scheme using the name Nightfox (if that is the case/capitalization you prefer).
In addition, I can then point wezterm's color scheme sync machinery at this repo to have it include your schemes in wezterm's next release, and keep it updated for future releases.
Having the metadata populated means that wezterm can show the author and upstream URL in its scheme browsing section of the docs; see https://wezfurlong.org/wezterm/colorschemes/b/index.html#belafonte-day for an example.
I think that would indirectly satisfy the wezterm users that filed https://github.com/EdenEast/nightfox.nvim/issues/156

I have opened PR #184 to provide the metadata fields to the template as well as generated new precompiled versions of the wezterm.toml files.
@EdenEast I love the themes and would love to see them available without extra work in Wezterm!!

Hi @wez happy to see the author of wezterm here! Going though the list of colorschemes from what I can see the majority are Capital, so I guess we can change it to that.
If you point wezterm to look at this repo could you also mention me. I would like to know how it is done and if for what ever reason (I may... make nightfox more than just a neovim theme) I can help maintain that.

Naming wise: if you prefer lowercase you can certainly use that; I was just proposing that as most existing schemes are capitalized, and your readme shows the names capitalized.  The main thing for me is that having the word wezterm in the name would be redundant!
Filling out the author will show your name in the docs along with the origin_url, and let folks know that this is where it came from.
The sync part of this in wezterm will essentially be the same as this bit that syncs the catppuccin scheme:
https://github.com/wez/wezterm/blob/30e2a1a6d16bb092d773a0359a2e26c989066687/sync-color-schemes/src/main.rs#L292-L298
but with the URL set to this repo; that will download a tarball of your main branch and add each toml file to the list of schemes and store it in a json blob for the docs, and generate some rust source that will be compiled into a hash table from scheme name to scheme data.
The catppuccin folks are also setting some (currently semi undocumented) fields in the toml file that control the appearance of the retro tab bar and make it match their overall theme, if you were thinking of doing something like that.

The catppuccin folks are also setting some (currently semi undocumented) fields in the toml file that control the appearance of the retro tab bar and make it match their overall theme, if you were thinking of doing something like that.

That would be super nice to have.

https://github.com/catppuccin/wezterm/blob/main/dist/catppuccin-frappe.toml#L38-L81 shows what they're setting; those fields are documented in the context of https://wezfurlong.org/wezterm/config/appearance.html#retro-tab-bar-appearance
The same fields/structure is also accepted in the toml file.
If you wanted to play around with that, it might be most convenient to do something like this (recent nightly build required):
local wezterm = require 'wezterm'

local colors, metadata = wezterm.color.load_scheme("/path/to/file/from/this/repo.toml")

colors.tab_bar = {
   -- stuff
}

wezterm.color.save_scheme(colors, metadata, "/tmp/output.toml")

return {
  colors = colors,
}

that would help you figure out what to use in your toml template for the code gen used here in nightfox.

The schemes are now sync'd to the docs and should show up in wezterm nightly builds within the next hour:

https://wezfurlong.org/wezterm/colorschemes/d/index.html#dawnfox
https://wezfurlong.org/wezterm/colorschemes/d/index.html#dayfox
https://wezfurlong.org/wezterm/colorschemes/d/index.html#duskfox
https://wezfurlong.org/wezterm/colorschemes/n/index.html#nightfox
https://wezfurlong.org/wezterm/colorschemes/n/index.html#nordfox
https://wezfurlong.org/wezterm/colorschemes/t/index.html#terafox

Thanks!


If bash is not found in WD, unset WD

This fixes a problem that RAVEN was having with running Civet in windows 10.

Hmmm, while I didn't think this would fail on a Mac testing platform... being you made a change to a windows-only test.
To make sure there was nothing wrong with the client running these tests, I triggered a new PR, which passed: #480

Okay, this passed after re-building my Mac test machines.


👀🚨 Postgres' max-length for a table name is 63chars, adding _raster might go wrong

Context
When importing a raster (tif file) we add the suffix _raster and in case the name of the file plus the suffix is longer than 63 chars postgresql won't save it properly, thus the dataset won't be treated as a raster
Steps to Reproduce

Drag and drop a raster with a name 56 chars or more

Current Result
The name is shortened, no _raster added
Expected result
@ivanprado and me decided to truncate the name beforehand in case is longer than 56 chars, but we will need a better way to mark the dataset as raster

Pushed to https://github.com/splashblot/dronedb/commit/2c1ea3e546a77db5f19d2b8590a07f98f8bfa5e3


Uncaught exception in Audio ready-thread

Recently this error started showing up whenever I try to play a YouTube video
22974 [JDA [0 / 10] AudioConnection Guild:<PHONE_NUMBER>43735053 Ready Thread] ERROR net.dv8tion.jda.core.audio.AudioConnection - Uncaught exception in Audio ready-thread java.lang.UnsatisfiedLinkError: /tmp/jna-3506402/jna581230142563279148.tmp: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.14' not found (required by /tmp/jna-3506402/jna581230142563279148.tmp)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:947)
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:922)
at com.sun.jna.Native.(Native.java:190)
at tomp2p.opuswrapper.Opus.(Opus.java:29)
at net.dv8tion.jda.core.audio.AudioConnection.setupSendSystem(AudioConnection.java:266)
at net.dv8tion.jda.core.audio.AudioConnection.lambda$ready$0(AudioConnection.java:130)
at java.lang.Thread.run(Thread.java:748)`

This is from JDA, not lavaplayer.

Oops, okay I see.
I've been using debian wheezy and was able to find a workaround for this until I'm ready to update my production server.


Configure tolerations for kube2iam DaemonSet. Update ETCD version to 3.2.6.

Configure tolerations for kube2iam DaemonSet.

Update ETCD version to 3.2.6

etcd v3.2.6 (2017-08-21)

fix watch restore from snapshot
fix etcd_debugging_mvcc_keys_total inconsistency
fix multiple URLs for '--listen-peer-urls' flag
add 'enable-pprof' to etcd configuration file format

Codecov Report

Merging #879 into master will not change coverage.
The diff coverage is 0%.

@@           Coverage Diff           @@
##           master     #879   +/-   ##
=======================================
  Coverage   34.69%   34.69%
=======================================
  Files          57       57
  Lines        3914     3914
=======================================
  Hits         1358     1358
  Misses       2396     2396
  Partials      160      160

Impacted Files
Coverage Δ

model/etcd.go
0% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

/lgtm
@camilb Thank you very much for your continuous effort 🍻


Update bit-transact-sql.md

Adding some Detail around limitations of the bit data type

@MikeRayMSFT
Can you review the proposed changes?
Important: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Thank you for your contribution.
We'll create an internal PR using your feedback, and also do a freshness pass over the article. When that PR is merged, this one will automatically close.


Example
Is this because I'm currently in California?
Or because I have my VPN on? <== nope

@afred: Just discovered Chrome's fake throttling: Dev tools; network tab; and the right-most of the options below that.

All the images (at least on the top of the page) seem to be loading simultaneously, so the CNAMEs hack is not something to pursue... actually we want to go in the opposite direction.
so I think we need to just get better image quality in fewer bytes

more jpeg compression?
png? Many of these images have large areas of solid color and a small palette, so PNG shouldn't be precluded.

.... or fewer images? All the images are loading simultaneously... but the subjective sense of speed might be improved if we loaded the first 6, and only then loaded the second 6: The second batch will usually be off-screen, so we can afford to wait before starting them.

Oh. They are already PNGs. They almost certainly could be made smaller, either compressing the PNG, or using JPEG, which would have been the more obvious choice to begin with.
@caseyedavis12 : I guess you've collected most of these images? FYI, PNG is a loss-less format, and wouldn't be my first choice for photographs.

Just taking imagemagick's default compression level, we're saving a whole lot. I'll move these files up to S3 and make a PR with the MD changes.
 104 scholar_exhibits/advocates/advocates_554x340.jpg
1832 scholar_exhibits/advocates/advocates_554x340.png

 104 scholar_exhibits/art_of_asian_cooking/art_of_asian_cooking_554x340.jpg
1744 scholar_exhibits/art_of_asian_cooking/art_of_asian_cooking_554x340.png

  80 scholar_exhibits/bibring/bibring_554x340.jpg
1512 scholar_exhibits/bibring/bibring_554x340.png

  64 scholar_exhibits/boring_and_sachs/boring_and_sachs_554x340.jpg
1184 scholar_exhibits/boring_and_sachs/boring_and_sachs_554x340.png

 128 scholar_exhibits/boston_civil_rights/boston_civil_rights_554x340.jpg
 512 scholar_exhibits/boston_civil_rights/boston_civil_rights_554x340.png

 112 scholar_exhibits/eric_jackson/eric_jackson_554x340.jpg
 696 scholar_exhibits/eric_jackson/eric_jackson_554x340.png

  72 scholar_exhibits/fenway_park/fenway_park_554x340.jpg
 464 scholar_exhibits/fenway_park/fenway_park_554x340.png

  48 scholar_exhibits/james_baldwin/james_baldwin_554x340.jpg
 368 scholar_exhibits/james_baldwin/james_baldwin_554x340.png

 128 scholar_exhibits/julia_child/julia_child_554x340.jpg
 736 scholar_exhibits/julia_child/julia_child_554x340.png

  72 scholar_exhibits/leary_and_jobs/leary_and_jobs_554x340.jpg
 408 scholar_exhibits/leary_and_jobs/leary_and_jobs_554x340.png

 120 scholar_exhibits/needlework/needlework_554x340.jpg
1840 scholar_exhibits/needlework/needlework_554x340.png

  64 scholar_exhibits/new_critical_television/new_critical_television_554x340.jpg
1376 scholar_exhibits/new_critical_television/new_critical_television_554x340.png

  80 scholar_exhibits/nine_poets/nine_poets_554x340.jpg
 376 scholar_exhibits/nine_poets/nine_poets_554x340.png

 104 scholar_exhibits/pan-african_liberation/pan-african_liberation_554x340.jpg
 616 scholar_exhibits/pan-african_liberation/pan-african_liberation_554x340.png

 120 scholar_exhibits/showing_status/showing_status_554x340.jpg
 592 scholar_exhibits/showing_status/showing_status_554x340.png

  80 scholar_exhibits/tech-nostalgia/tech-nostalgia_554x340.jpg
 504 scholar_exhibits/tech-nostalgia/tech-nostalgia_554x340.png

  80 scholar_exhibits/television_violence/television_violence_554x340.jpg
1280 scholar_exhibits/television_violence/television_violence_554x340.png

 104 scholar_exhibits/zoom/zoom_554x340.jpg
1888 scholar_exhibits/zoom/zoom_554x340.png

  88 special_collections/aapb/aapb.jpg
 288 special_collections/aapb/aapb.png

 104 special_collections/advocates/advocates.jpg
 464 special_collections/advocates/advocates.png

 128 special_collections/from_the_vault/from_the_vault.jpg
 680 special_collections/from_the_vault/from_the_vault.png

  96 special_collections/march_washington/march_washington.jpg
 336 special_collections/march_washington/march_washington.png

  72 special_collections/ntw/ntw.jpg
 224 special_collections/ntw/ntw.png

  64 special_collections/press_people/press_people.jpg
 304 special_collections/press_people/press_people.png

 208 special_collections/rock_roll/rock_roll.jpg
 752 special_collections/rock_roll/rock_roll.png

 136 special_collections/say_brother/say_brother.jpg
 752 special_collections/say_brother/say_brother.png

  88 special_collections/stock_sales/stock_sales.jpg
 408 special_collections/stock_sales/stock_sales.png

 104 special_collections/tocn/tocn.jpg
 352 special_collections/tocn/tocn.png

 104 special_collections/vietnam/vietnam.jpg
 496 special_collections/vietnam/vietnam.png

  64 special_collections/war_peace/war_peace.jpg
 264 special_collections/war_peace/war_peace.png

@mccalluc: Thanks

@mccalluc @afred Were either of you able to reproduce this?
Are all these png -> jpg changes more a result of best practices in presenting images or a reaction to this issue?
If it's following best practices, cool.  I'll make sure to put somewhere in the documentation when creating images for exhibit, collection, carousel, etc, to use jpg.

@Muraszko

Reproduction: see my first comment in this thread
This issue brought it to my attention, but yes, jpg is usually the best practice for photos on the web. PNG should be thought of as a replacement for GIF.

@mccalluc
Got it, thanks.  Then I say go for it and I'll be sure to include in the documentation to use jpg in the future.

png -> jpg fixed it. closing.

👏


Is this app working anymore? At least for anyone ?

I used this app on my Honda with no issues. Few days later, I cloned the project and created my own apk to run it with my own package name and it worked. It is no longer working now with anything. Is there still people using it. Can someone tell me how to use it? 🤟

I was just wondering the same thing! Hope some one can answer


Change MixedStructTypes url for renaming to DynamicSumTypes

I'd like to change the name of the package because its evolution made me realize that this is a better name, repo: https://github.com/JuliaDynamics/DynamicSumTypes.jl, I plan a 1.0 release of the package soon so I thought that this could be a good moment to change its name

Can someone please merge this PR? I finished the restructuring of the package so I would like to release it :-)

@DilumAluthge sorry for the direct ping, but I see that you are the most active in this kind of operations, could you please take a look?

thank you @DilumAluthge !


Add drag to RichTextLabel

I've implemented the drag operation on RichTextLabel so it is possible to copy selected text into other nodes that support drag and drop.

Thanks!


PORTALS-2634, PORTALS-2636 - SDS for FullTextSearch, SqlEditor, Explore alignment fixes

Changed FullTextSearch and SqlEditor components to match SDS style and put info button inside the input. While these changes were not explicitly called out in designs, it supports PORTALS-2636 by having the end of the input align with the right edge of the components
Also updated CSS margins for many components

Component
Before
After

FullTextSearch

SqlEditor

Very slick, nice work


Bug: Lines too long over counts multiple spaces and tabs.

Everything within the double quotes is the single line. Each line is 97 characters. At "maxlen": 100 all lines are to long. At "maxlen": 120 The second two lines below are too long. What gives? Every line has the same length. I see this as a bug. For me a space is one character and tabs are 4 characters. Does jshint see tabs as 8 characters or something? Can I set it?
"          'vii) using for any unlawful, harassing, abusive, criminal or fraudulent purposes." ' +"
"          '					} 				] 			}, 			{ 				"heading" : "Proprietary Rights.", 		' +"
"          '		"body" : [ 					{ 						"paragraph" : "You acknowledge that as between' +"

You should use JSCS to check lines' length, as this is a stylistic issue. The maxlen option will be removed in JSHint 3: #1854


Register numbers don't match with the ID of peripheral due to them being transmuted to the same type

In the current driver code similar peripherals are cast to the same type (usually the type for the XXX0 peripheral). So the register names are named also with the 0th one.
@jessebraham

FYI I've just transferred this issue, as the PACs are where this should be corrected.


Bucket<CachedSendEndpoint> appears to be causing a memory leak

Is this a bug report?
Yes this is a bug report.

Can you also reproduce the problem with the latest version?
I have not attempted to do this yet.
Environment

Operating system: microsoft/dotnet:2.1-aspnetcore-runtime  on Kubernetes
Visual Studio version: Proffessional 2019
Dotnet version: .net core 2.2

Steps to Reproduce

I have a long running .net core console app which uses mass transit to consume from a queue. I've noticed that the Bucket<CachedSendEndpoint> and Bucket<CachedSendEndpoint> appear to be growing unboundedly. I've used .net memory profiler to take a look and here are some screenshots:

Also the instances graph

As you can see those two instances make roughly half the Gen 2 Heap. Also the two snapshots are roughly an hour apart and yet if you look at the live bytes and live instances it seems that the removed column shows 0 for both.
The code is proprietary and I'm not sure which parts of the code to show you could you let me know what might areas might help you diagnose?
Expected Behavior
Based on the documentation shown here: https://masstransit-project.com/MassTransit/architecture/green-cache.html#asynchronous-for-the-await-for-it-win
I thought that the cache had a capacity and age limit and these objects would get cleaned up. What is this and can it be configured? I'm not an expert on this issue :)

It should be limited to 1000, but if you're creating thousands a minute that can cause it to retain more instances until the buckets are cleared. These are the default:
https://github.com/MassTransit/MassTransit/blob/develop/src/MassTransit/Transports/SendEndpointCacheDefaults.cs
The minimum age is now 10 seconds, and in the past I've never been able to reproduce this once it was fixed. I can look at it again though, it's possible that something is keeping a reference to the cached endpoint.
In the call graph you have linked, that's a publish endpoint - which honestly there shouldn't be more than a few of - one for each message type in your system that is published. If you're seeing significantly more, look for instances that were owned by the SendEndpointProvider, not the publish endpoint provider.
And if you're using a request client, and creating a new bus instance for each request, STOP doing that and use the same bus instance for each request. It will be faster, and will reuse the same response bus endpoint which will prevent the creation of a bunch of send endpoints for the temporary endpoint addresses that disappear.

You've clearly got something holding on to references of something larger. The fact there are 47,000 dictionaries keeping track of configuration observers is crazy. There is clearly something not being disposed.

Did you figure this out? Can this issue be closed?

Hello
Thanks very much for your help. I believe we did find the issue we were not disposing an object. I will put more detail shortly.

Great. I'll close the issue in the meantime to get it off the open list.


Only return verified accounts from getUnapproved

The admin account registration approval page now only shows pending accounts that have verified email addresses.

LGTM!
All tests pass!


Cargo fix transition to 2018 edition url is wrong

Just came across an error message where cargo-fix points me to a broken url: https://rust-lang-nursery.github.io/edition-guide/editions/transitioning.html
error: cannot prepare for the 2018 edition when it is enabled, so cargo cannot
automatically fix errors in `src/lib.rs`

To prepare for the 2018 edition you should first remove `edition = '2018'` from
your `Cargo.toml` and then rerun this command. Once all warnings have been fixed
then you can re-enable the `edition` key in `Cargo.toml`. For some more
information about transitioning to the 2018 edition see:

  https://rust-lang-nursery.github.io/edition-guide/editions/transitioning.html

Hey, thanks for the report!
It seems to me like the page is now called https://rust-lang-nursery.github.io/edition-guide/editions/transitioning-your-code-to-a-new-edition.html -- cc @steveklabnik for confirmation and to drop off a "cool URLs don't change" along the way :)
This is actually an issue in cargo though -- because it's part of the cargo-fix command. Can you close this issue open it again on https://github.com/rust-lang/cargo/issues? (Otherwise I can do it, no worries.) Did the tool tell you to report an issue in this repo? If so we might have too URLs to fix!

This is actually an issue in cargo though -- because it's part of the cargo-fix command. Can you close this issue open it again on https://github.com/rust-lang/cargo/issues?

My bad.  Created PR in rust-lang/cargo: rust-lang/cargo#5900

Did the tool tell you to report an issue in this repo? If so we might have too URLs to fix!

No.  This is not a bug unless for the broken url.

Perfect, thank you!
On Thu, 16 Aug 2018, 23:51 Diogo Sousa<EMAIL_ADDRESS>wrote:

This is actually an issue in cargo though -- because it's part of the
cargo-fix command. Can you close this issue open it again on
https://github.com/rust-lang/cargo/issues?
My bad. Created PR in rust-lang/cargo: rust-lang/cargo#5900
https://github.com/rust-lang/cargo/pull/5900
Did the tool tell you to report an issue in this repo? If so we might have
too URLs to fix!
No. This is not a bug unless for the broken url.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/rust-lang-nursery/rustfix/issues/143#issuecomment-413695824,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABOX9_Re0Pt6d9YM0M7yvCmNkxik3tWks5uRel-gaJpZM4WAnK5
.


/all parameter issue simulation

Remember this issue? https://github.com/IMRCLab/crazyswarm2/issues/234
Unfortunately, the simulation backend is suffering from it too. But... we got to put some kind of exception in right? right now there is zero parameter support in simulation, but how can we make the python library be aware of that.

Would perhaps a dummy /all/dummy parameter be enough to solve this for simulation?


fix: properly remove wasm-bindgen from rust wasm modules

NOTE: the main difference is when we call wasm-snip we explicitly instruct it to remove the nefarious wasm-bindgen import that remains, even if no other wasm-bindgen imports are being used.
wasm-snip input.wasm -o output.wasm -p .*__wbindgen_throw
I've tested this using the ethers-core wrap, which was experiencing a problem of having left-over wasm-bindgen imports, and this fix is fully functional from my testing.

NOTE: @cbrzn is investigating wrap-test-harness CI issues


Increment version for 2.x line from 2.13 to 2.14

Description
[Describe what this change achieves]
Increment version for 2.x line from 2.13 to 2.14
Check List

[ ] ~New functionality includes testing~
[ ] ~New functionality has been documented~
[x] Commits are signed per the DCO using --signoff

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.

@scrawfor99 it is the same as https://github.com/opensearch-project/security/pull/4154 ?


Files are often updated with incorrect format

Hi, oftentimes the json files are updated with incorrect format, which means they can't be read (currently it's cnmts.json).
Could you add something to prevent that?  Or a Github Action CI to at least indicate that a commit is unusable and notify in case of an issue ? I could quickly do it if you're willing to add that.
Thanks

its fixed, server ran out of disk space


Add OpaqueType support to Records

OpaqueType allows simplifying Record references when the Record subtypes have single map elements
Contributor Checklist

[ ] Did you add Scaladoc to every public function/method?
[x] Did you add at least one test demonstrating the PR?
[x] Did you delete any extraneous printlns/debugging code?
[x] Did you specify the type of improvement?
[ ] Did you add appropriate documentation in docs/src?
[x] Did you state the API impact?
[x] Did you specify the code generation impact?
[x] Did you request a desired merge strategy?
[x] Did you add text to be included in the Release Notes for this change?

Type of Improvement

new feature/API

API Impact

New override for Records for single element types
Backend Code Generation Impact

If Record.opaqueType is overridden to true, the generated CHIRRTL will substitute name of the Record for that of the subfield, and substitute type of the subfield for type of the Record
Desired Merge Strategy

Squash: The PR will be squashed and merged (choose this if you have no preference.

Release Notes

Add new override in Record to support opaque types
Reviewer Checklist (only modified by reviewer)

[ ] Did you add the appropriate labels?
[ ] Did you mark the proper milestone (Bug fix: 3.4.x, [small] API extension: 3.5.x, API modification or big change: 3.6.0)?
[ ] Did you review?
[ ] Did you check whether all relevant Contributor checkboxes have been checked?
[ ] Did you do one of the following when ready to merge:

[ ] Squash: You/ the contributor Enable auto-merge (squash), clean up the commit message, and label with Please Merge.
[ ] Merge: Ensure that contributor has cleaned up their commit history, then merge with Create a merge commit.

Github automerged this even though CI failed.... that's weird. I'll push a fix


Remove HeaderBackend requirement from AuthorityDiscovery and NetworkWorker

NetworkWorker and AuthorityDiscovery took in a client that needed to implement HeaderBackend just to fetch the best hash/genesis hash. Shuffling around the code a bit can eliminate this client and allow some nice refactorings in cumulus.
cumulus companion:  https://github.com/paritytech/cumulus/pull/2385

bot merge


Made Features Page Responsive

Fixes #312
The Features Page is now responsive for all devices.

@AkshitGarg24

Done @sk66641


Makes send_raw_transaction return TxidHex instead of RawTx

bitcoind_client::send_raw_transaction was returning RawTx which, while syntactically correct, made no sense conceptually.
Creates a new conversion type (TxidHex) and makes sendrawtransaction return it instead.
close #27

Could update this now that the dependent upstream PR is merged :)

Will do!
Should I split this into two PRs (one for Txid and another one for Transaction), or should I push the Transaction changes upstream and leave this open until that's also merged?


[nana] initial commit

This PR adds support for nana library.

Hi @codicodi, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;

@codicodi nice addition 👍

Thanks, great job on the port 💯 :)


The search input is over the "about" slider

Expected Behavior
The search input should be below the about part which is displayed when clicking the i icon on the header
Current Behavior
(Please fill this)
(Eventually add screenshots)
How to reproduce
(Please fill this)
(Eventually specify os and browser)
Possible Solution
(Optional)

Not an issue anymore, thanks to @AlZorba and his margin-top instead of top ! 🤟 (if I understood correctly)


OData adapter needed

Hi,
I hope I don't seem too aggressive but I dare to  kinda repost my message here, instead as a comment in the issue #2 . This really would be a great addition as a feature, to have an OData adapter

I m gonna need a OData adapter which indeed indents the JSON as we can see here :
 Official OData  doc point "2.2 Batch Request Body".
You see it does indent a "changeset_< hash>" into a "batch_< hash>"  Example:
--batch_36522ad7-fc75-4b56-8c71-56071383e77b
Content-Type: multipart/mixed; boundary=changeset_77162fcd-b8da-41ac-a9f8-9357efbbd621
Content-Length: ###
--changeset_77162fcd-b8da-41ac-a9f8-9357efbbd621
Content-Type: application/http
Content-Transfer-Encoding: binary
POST /service/Customers HTTP/1.1
Host: host
Content-Type: application/atom+xml;type=entry
Content-Length: ###
.... more changesets ....
This probably isn't too hard to write an adapter, but I would like to know if something was already done for such use case with OData @georgeolson @jonsamwell  ??
Thanks a lot for your help

Hi @fabm22
Yeah it would be great to get a OData adapter in.  You are right it isn't to hard to do but it would be really really really helpful and speed the process along if you could provide a sample OData server implementation that I could code against.
https://github.com/jonsamwell/angular-http-batcher/tree/master/servers
Alternatively, if you want to write it feel free to ask me any questions.  The best place to start would be to look at the current HTTP Batch adapter as it probably will not be too far removed from it.
https://github.com/jonsamwell/angular-http-batcher/blob/master/src/services/adapters/httpAdapter.js
Thanks,
Jon

@fabm22  I'm looking into writing an odata adapter for this. How would you handle the preflight check for odata batch requests?
My understanding is that an OData batch request is a POST with "Content-Type: multipart/mixed."  This content type needs a preflight OPTIONS request. But the OData reference services do not allow OPTIONS. They reply with a status code 501--not implemented.
I think this gives us two options: 1) skip the preflight check or 2) modify the OData service to respond correctly to OPTIONS. Both of these feel like hacks though. Which one seems like the better option? Is there another way to do this?

@kerzner It will only need a preflight request if the request is coming from a different domain than the callee.  The browser will handle this so you have no control over it.

@kerzner @jonsamwell From my little experience, yes the aspect of preflight is only handled for CORS  ( https://en.wikipedia.org/wiki/Cross-origin_resource_sharing ) scenarios , ie calls between different domains. In our case we use a proxy server to always have the same domain.
And for your question, I would go (1), skip the preflight altogether, given if you use an OData Service, it is implied that you will use multipart/mixed as Content-Type for a batch operation
"Batch requests allow grouping multiple operations, as described in [OData:Core], into a single HTTP request payload. A batch request MUST be represented as a Multipart MIME v1.0 message [RFC2046], a standard format allowing the representation of multiple parts"
src : http://www.odata.org/documentation/odata-version-3-0/batch-processing/

Thank you both for the info. It sounds like the preflight check cannot be skipped as it is handled by the browser. I need to figure out how to get my odata server to respond to the OPTIONS request correctly. This is not really related to creating an odata adapter for this project though.
@fabm22 did you ever write an adapter for this? what did you end up doing with your batch requests?

@kerzner any progress on this?

No. I don't have a reference odata service to develop with. I had planned to add an OData endpoint to your WebApiHttpBatchServer, but I can't get the demo working locally. I might not be using it right though.
Here's what I've done:

I ran the WebApiHttpBatchServer.sln in Visual Studio 2015 - this runs at http://localhost:8080/
I then created a webstorm project using your repo, installing the dependencies with bower.
I ran the example/index.html using webstorm. This runs at http://localhost:63342/angular-http-batcher/example/index.html
When I click the 'call singe api' button, this is the error that I get:

Like I said, I'm probably doing something wrong, but I don't know what. I don't have much experience with web services.


[chart/redis-ha][service to expose the read only replicas]

Thank you for an awesome chart.
Is your feature request related to a problem? Please describe.
Currently there is no service to expose only the read replicas, so we can not distribute read-only loads.
Describe the solution you'd like
A service to expose the read-only replicas. Preferably it can point to the master when there is no replicas left.
Describe alternatives you've considered
Using the headless service -redis-ha. Is it supposed to return a random endpoint from both the master and the replicas? I am not sure if it is a best practice. Also, we want to exclude the master.
Additional context
In our app we have 1 master and 2 replicas. If we can read only from the replicas we can share the load better in normal condition.

@MrNghia123 If its read-only workloads, can the round robin of the standard service / headless service fulfil your needs?
That can effective ship any connections you would have to an instance and since they would be read-only workloads, any instance can serve?


Failed at the<EMAIL_ADDRESS>start script.

I got Err can you help me solve it, this is me err message
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>start: cross-env REACT_EDITOR=code expo start
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!      /Users/mac/.npm/_logs/2020-02-16T09_10_30_649Z-debug.log
my package Json is:
{
"name": "rn-material-kit-free",
"version": "1.4.0",
"description": "Material Kit React Native. Coded by Creative Tim",
"main": "node_modules/expo/AppEntry.js",
"private": true,
"scripts": {
"start": "cross-env REACT_EDITOR=code expo start",
"android": "cross-env REACT_EDITOR=code expo start --android",
"ios": "cross-env REACT_EDITOR=code expo start --ios",
"eject": "expo eject",
"test": "node ./node_modules/jest/bin/jest.js --watchAll"
},
"jest": {
"preset": "jest-expo"
},
"dependencies": {
"expo": "^35.0.0",
"expo-asset": "~7.0.0",
"expo-font": "~7.0.0",
"expo-linear-gradient": "~7.0.0",
"galio-framework": "^0.6.3",
"react": "16.8.3",
"react-native": "https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz",
"react-native-gesture-handler": "~1.3.0",
"react-native-modal-dropdown": "^0.6.2",
"react-navigation": "^3.11.0"
},
"devDependencies": {
"babel-preset-expo": "^7.0.0",
"cross-env": "^5.2.0",
"expo-cli": "^2.4.0",
"jest-expo": "^35.0.0"
},
"bugs": {
"url": "https://github.com/creativetimofficial/material-kit-react-native/issues"
},
"homepage": "https://demos.creative-tim.com/material-kit-react-native/"
}

Hi @chenshuxian ,
Thank you for trying out our products! Before going further I have to ask you what were the steps you've taken to get to the above error. Have you installed the packages via npm install? Before that you should remove all ^ symbols from your package.json file just to be 100% sure everything is going to work as intended.
Thanks,
Alin 🤙🏽

thx your help @palingheorghe solved


[generic API] decide on models/apps in routes vs in query params

Currently the model and app for the generic API is in the route of the API view. This allows to reuse thecontenttype_converter function from the html views. However, for bringing the API views to the swagger definition we need either:

a way to create dedicated endpoints (including dynamic description) for every possible route in the swagger definition (either by overwriting the drf-spectacular description, or by dynamically creating classes for every endpoint)
or only one route that takes app and model as a query param. If we opt for this option we should create a BaseClass that converts a default query param to a ContentType similar as the contenttype_coverter does

we stick with contenttypes in routes instead of parameters


invalid peer certificate: UnknownIssuer

Im probably doing something wrong, but when I attempt to connect to the server, the client gives the error: invalid peer certificate: UnknownIssuer and the server gives: received fatal alert: UnknownCA
As Im still learning all this, I believe I've probably messed up the cert gen side of things, but I'm not sure how and I've tried many different combos.

sudo rkvm-certificate-gen -i 192.168.X.XX /etc/rkvm/certificate.pem /etc/rkvm/key.pem

Run the abo.  On server, change the IP address to match the PC you are using as server.
Copy /etc/rkvm/certificate.pem to the client PC and put in /etc/rkvm on client,  I used kdeconnect, but a USB drive will do it.
Reload the services on each PC

The only problem I had was the default hotkey did not work for me, so I changed to alt-space
## In server TOML
switch-keys = ["left-alt", "space"]

Same issue is happening here as well,
@xircon that's not a valid solution unfortunately

I ran into this issue as well, but after regenerating the certificates, I forgot I neglected to restart rkvm-server. Once that was restarted, it worked well.


Expand the documentation of map_to_primitive

Explain in more detail why you would want to use iso8601, and how.

The rubocop version was updated and the rubocop task is now failling.

Nice job! I'll merge it as soon as you fix the rubocop errors :wink:

Was already on it


Create Nanda Gopal.md

Hey Gssoc team in the below PR i had given my full effort but it was not merged can you please review it https://github.com/Kushal997-das/Project-Guidance/pull/1602#event-15218432316 this PR had not been assigned any level, This is my first time in open source contribution can you please help @sanjay-kv

@NANDAGOPALNG the PR is closed by Project admin himself and he gave the reason also, therefore no points


feat(cloud-cognitive): log jest coverage to terminal

Contributes to #1781
Update the jest configuration in the cloud-cognitive scope to log coverage summary to terminal.
What did you change?
updated the coverageReporters array in the jest config with text and text-summary options.
https://github.com/markkulube/ibm-cloud-cognitive/blob/mkulube-coverage-summary/packages/cloud-cognitive/jest.config.js#L8-L9
How did you test and verify your work?
yarn test --coverage src/components/Datagrid/Datagrid.test.js

@matthewgallo
Re-requesting as I added safe checks!
From
jestConfig.coverageReporters.push('text', 'text-summary');
to
jestConfig?.coverageReporters?.push('text', 'text-summary');

Sorry nevermind, this does add to the coverageReporters array but I think it should still be set from config/jest-config-ibm-cloud-cognitive/index.js so that all of the configuration is together in one place.

@matthewgallo
Got it!
The text and text-summary options have been declared in config/jest-config-ibm-cloud-cognitive/index.js#L27-L28


Using em over px in min-width?

Question:
Why are you using em over the more common px for designating min-width (for screen sizes)?
Just curious. :smiley:

Tachyons v5 will become a monorepo so this issue is being closed, if the issue is still relevant please open an issue with the main repo https://github.com/tachyons-css/tachyons/issues/new & link to this one


Consecutive close on click requires mouse cursor move

Just a very trivial one here, nothing serious :)
When you have multiple documents open, and point the muse cursor over the first one's close button and click, it closes that document and the next one that was below it shifts up in the ui so that it's close button is now under the cursor. but if you click again without moving the location on the screen of the mouse cursor, it doesn't fire the close button. you have to move the mouse - even if it's just by a single pixel in any direction - and then click on the close button again in order to successfully click it.
i'm on mac os x 10.11.1. i'm not sure if this behaviour is actually something within brackets or if it's common to os x itself, as I've seen behaviour like this elsewhere on os x. for example, in mission control, the same little issue happens when you enter mission control then try to select an app that is directly under the cursor position, without moving the cursor. click, app doesn't get selected. move the cursor, click it again, works.

That's a valid bug that I have also been running into lately. It's annoying. This works correctly on Windows but it's broken on Mac. Can someone verify on Linux?


fix build error: Type 'Uint8Array' is not assignable to type 'string'.

got following error while yarn build:
yarn run v1.22.10
$ tsc -d
index.ts:696:18 - error TS2345: Argument of type 'PrivKey' is not assignable to parameter of type 'string | number | bigint | boolean'.
  Type 'Uint8Array' is not assignable to type 'string | number | bigint | boolean'.
    Type 'Uint8Array' is not assignable to type 'string'.

696     num = BigInt(key);
                     ~~~

Found 1 error.

error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Which typescript version are you using?

Works for me, but if you're using old typescript, db757df should fix it


[stdlib] Initial FreeBSD port.

Dmitri, All the duplication in the overlay code is now gone. Only the module map is duplicated but I'm not too worried about that (would like to hear your opinion). Also, for now, FreeBSD libc is not-entirely-correctly called Glibc -- but I think a renaming can be done later (maybe it should be called Libc?)
Thanks!
--
Davide

This continues the discussion in #664. I wasn't able to update that request which was closed. I'll try to improve my git foo in the future to avoid similar issues.

@dcci Thank you, I like this direction a lot!
I think you might want to adjust this line so that the library name is libc on FreeBSD:
add_swift_library(swiftGlibc

Also, the module name is inferred from the first source file name.  You might need to add some CMake plumbing to allow passing down an explicit module name.

@dcci Just let me know if you want to merge this as is, and refactor later.

Let's go for merging as is if you dont mind. I'll refactor immediately after the end of the christmas break.

@dcci Merged, thank you!


Firefox issue

Ok, after the last update, the side bar works in firefox, great job. Now the only issue I see, is the rainbow text effect is nowhere to be seen. Just a small issue, just letting you know.

FIREFOX FIXED
SPEEAD THE WORD


Clean up code sample blocks

Mark them as a specific language so they get syntax highlighting
Unify spacing to 4 spaces
Use … consistently

This is entirely containing only stylistic changes and no changes to the samples themselves.
Click the following button on the Files changed tab to make this easier to see the changes.

ping @jimmyca15.

Thanks @davkean, looks great with the syntax highlighting. Just one comment.

@jimmyca15 Fixed, feel free to squash to throw away that additional commit.