Multiple Language Support for GUI Text, Translation friendly

Is your feature request related to a problem? Please describe.
GUI text right now (e.g. Button text, Window Titles) is mainly hard coded, or the defaults are hard coded in English.
Describe the solution you'd like
I'd like to pull out all text strings like this into .json data that has English defaults but can also be overrode much like the default appearance theme can be overridden.
In this way a language selector in a pygame app could change the language used in the GUI by switching between json files for different languages.
I'd like it to be as 'industry standard' as possible because I know many small developers work with outside translation services.
Describe alternatives you've considered
Symbols for everything?
To Do To Close

[ ] Add a language selection box to the general test example that lets us switch between a couple of languages (German, Japanese, Russian). This will lete us test if everything else is working.
[ ] Support loading .po/.mo translation files with polib.
[ ] Add a locale manager to the core module that holds all the strings for the current language and paths to translation files for all the supported languages.
[ ] Add a GUI wide event that elements with text can react to when the language changes (getting an appropriate translation mostly but perhaps also resorting any selection list type elements that are kept sorted (right now we don't actually have a thing to keep these sorted).

May also need to investigate bundling more default fonts for different languages:
https://fonts.google.com/?query=noto+sans

I would recommend supporting GNU PO/MO files (e.g. via polib) as it is one of the only ways I know to get proper support for all the "weird corner cases" that make up language translations.  Both for picking the right variant of a word based on the "number of items" or context based translations.
The singularity game supports translations via polib (without the counter support, sadly).  One of the hardest parts is to properly reload the text when the translation is changed.  Having built-in support for this in the GUI framework makes a world of difference in how easy this is to get right.

Addendum: You will want the gettext variant that only supports MO files if you want to support plural translations correctly (polib does not have this).  Though PO files can be supported by "on-the-fly" rewriting them to MO files via polib (gettext.GNUTranslations can parse a MO file from an open file-handle without having to box with "installing" it correctly).
Built-in support for translation updates also affects things like sorting order.  E.g. if you have knowledge-base/X-pedia of in-game concepts and the concepts are sorted by name, then they need to be reordered on translation reload as all the strings change.  Sadly, locale-aware sorting is a separate pain where the built-in locale.strxfrm does not work reliably on Mac OS - the only reliable method I have found is ICU.  Fortunately, the sorting pain can be punted back to the consuming programmer as long as they have a suitable hook for reacting to locale changes (leaving them to decide if they want correctness + an extra dependency vs. default without the dependency).

Currently, the text arugument passed to a UI element only supports English. Looking forward to seeing multi-language support.

I've had a look into using python's gettext library for localization support. Unfortunately, from what I can tell as a non-lawyer, that submodule is effectively licensed under the full-fat GPL - meaning it is only usable in free software (unlike pygame which is LGPL, or this library which uses the MIT license). Which is a shame as it does look pretty good. I don't want to restrict people using pygame-gui to only release free games, because I used the wrong part of the python standard library.
I have also found python-18n by @danhper which looks to have some of the same functionality - it is licensed under the MIT license instead. Do you think it might work for your uses cases @nthykier ?

I think the library you find looks decent at a very quick glance as default translation engine given you cannot use gettext.  The namespace feature seems like a nice touch too and it does seem to understand + solve the number issue sufficiently well.
But to be honest, it matters less to me which built-in translation engine pygame_gui provides (as you can usually work around that if needed be) as long as it provides the relevant hook for a (custom) widget to react to a translation reload/change.  You already added a "Task" item for that feature, so I am look forward with anticipation to seeing it. :)

Correction - the library you found does seem to suffer from the standard "number issue" that most "basic" translation engines suffer from.
If you want the nitty gritty details, have a look at https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html#Plural-forms which mentions languages like "Romanian" which has the plural forms:

Singular
Plural ending with [012][0-9].  Such as 213
Plural (everything else).  Such as 357

Compare that with the options given by python-i18n:

zero
one
few
many

Now 213 and 357 are clearly neither "zero", "one" nor "few".  But at the same time, they cannot both be "many" either.
(If you really want to stress test the translation engine, then check Arabic which has 6 distinct plural forms according to that source)

Hey! GitHub notified me of the discussion so jumping in.
I have indeed mostly used this with English, French and Japanese, so there might be quite a few cases that are not covered for other languages.
Regarding plurals, I think it should be quite easy to add per-language rules using count as an argument to the rule. Do you think that would be enough for cases like Romanian or Arabic? I'm unfortunately not familiar with either of these languages.

I am not super well-versed in "exotic" plural rules other than what that page shows and I recommend reading the relevant part of it (I think the interesting bit comes half-way down).  But what I can tell is that it is complicated and my gut feeling is that count proposal seems too simple to solve it (not that I fully understand what you mean, but the examples shown in the gettext documentation are complex - and makes me glad that I only work with languages that have "simple" plural rules).

Looks like you'd maybe need to be able to add rules something like:
'{count}%10 >= 2 and {count}%10 <= 4' : "You have {count} new mails"

Except, you would want the translator to inject that rule, so you as a programmer does not need to know all the existing plural rules.  Related, I am pretty sure that if the programmer need to define this as input, they will end up with conflicting definitions once they add "enough" languages.

Yes, ideally the translator would be able to pass a language specific
condition to the translation engine and on the code side it would do
something like:
for condition, index in enumerate(conditions):
    if condition (count):
        plural_string = conditional_strings[index]
if plural_string is None:
    #whatever happens now with one, zero etc

Where condition is an expression/function evaluating to a Boolean with
count as a variable.
Hopefully that makes sense writing code on a phone while walking is tricky
🙂
On Fri, 12 Nov 2021, 06:34 Niels Thykier, @.***> wrote:

Except, you would want the translator to inject that rule, so you as a
programmer does not need to know all the existing plural rules. Related, I
am pretty sure that if the programmer need to define this as input, they
will end up with conflicting definitions once they add "enough" languages.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MyreMylar/pygame_gui/issues/79#issuecomment-966860681,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADGDGGUI7PLWKLF72INHIULULSYRFANCNFSM4LQNPDOQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Thanks for the comments, that's more or less what I had in mind.
I think it might be slightly simpler to allow the function to return a custom key and then use it in the translation file.
For example:
def romanian_rule(count):
    if count == 1:
        return "one"
    elif count == 0 or (count % 100 > 0 and count % 100 < 20):
        return "special"
    else:
        return "other"
i18n.config.plural_rules["ro"] = romanian_rule

and in the pluralize:
plural_rule = i18n.config.plural_rules.get(locale)
if plural_rule:
    key = plural_rule(count)
    if key in translation:
        return translation[key]

I believe most of these rules could be built in the library but there is obviously the non-trivial task of adding and documenting them.


Bitcoin cash

Description

Add Bitcoin Cash
Sign BCH transaction
Add Cash Address support

Black Duck Security Report
Merging #41 into develop will not change security risk.
Click here to see full report

Black Duck Security Report
Merging #41 into develop will not change security risk.
Click here to see full report


Update with display.root_group for CircuitPython 9 compatibility

This PR replaces display.show with display.root_group in the 4 example files and the README

I think this error is somehow due to the superclass that is being extended by this https://github.com/adafruit/Adafruit_CircuitPython_SPD1656/blob/1f9014e0e2fb0001b2c9104a34ab3a1a79176551/adafruit_spd1656.py#L51
I'm not entirely sure why that error comes up. I think sphinx is using Blinka_DisplayIO for it's knowledge of displayio which doesn't have the latest chagnes / split up from the core I think. So perhaps that ties into this somehow.
In any case I think EPaperDisplay was moved with that recent change as well so this line should probably be updated to:
class SPD1656(epaperdisplay.EPaperDisplay):

I tested out this doc build locally and found that if I add epaperdisplay (or displayio if that isn't changed) to the list of mock modules here in the docs conf.py file: https://github.com/adafruit/Adafruit_CircuitPython_SPD1656/blob/main/docs/conf.py#L30 it will allow the docs to build successfully.


Move terrain generation to GPU

For terrain generation to use 3D noise without being too slow (required for caves), we need it to be on GPU.
Unfortunately it also means that we can't keep the nice abstraction provided by https://github.com/Inspirateur/noise-algebra, because that only works on CPU.
We could build back a nice abstraction on GPU but it has to be done incrementally because it's harder and I'm also less knowledgeable on shader code. It's a tough decision but it has to be done!
Relevant lib for noise on GPU: https://github.com/johanhelsing/noisy_bevy

I don't know if you've considered these issues, but I think they're very important in terms of Riverbed's goals.

Generating chunks on the GPU is great, but you want multiplayer. This means that if you're doing something like Minecraft where you can buy a server hosting solution, you'll need a server with a GPU which cost far more money. The same goes for people who host their own servers. Can they use an integrated GPU?
If the server doesn't have a GPU, perhaps the clients can generate the map on their own? But then comes the problem of cheating and players who know the seed.

All this may or may not concern you, but I just wanted to share some of the issues I've been thinking about for my game.

Thanks for your input :) These are interesting questions !
I do need to evaluate whether GPU generation is worth it or not, and maybe provide a fallback method of generation if no GPU is present 🤔
Other solutions could include asking clients to generate the terrain indeed, and we could imagine cheating mitigation strategies such as validating random chunks ...
Anyway I'll see that when I go over this issue :)

I just want to chime in and say: cheat prevention also depends on what kind of multiplayer you want to have.
Is it just friends / small scale, is it competitive?
If a few friends play together and one friend cheats: so what? Let the friends handle that.
If you give everyone a seed and let the clients generate the terrain and one client cheats they could potentially see far away valuable ores (just an example), but the server can still decide not to send them the info that an ancient dragon sleeps near those ores. Or the server can decide that it won't send any updates for that far away chunk... Movement and actions should still be server side validated, to disallow instant teleportation etc. pp.
Just my 0,05

I just want to chime in and say: cheat prevention also depends on what kind of multiplayer you want to have.

Yes, my stance on that is that being able to do multiplayer with friends is certainly valuable and is always the first step in development, but eventually I want to be able to have larger scale public server and that does require anti cheat measures, which we will figure out when we're there, meaning not now :p

Added this internal crate https://github.com/Inspirateur/riverbed/tree/main/crates/riverbed_closest (what used to be "nd-intervals") for biome/plants selection. Hopefully this will allow us to blend custom noises per biomes together.


Firebase: Error (auth/network-request-failed).

I am trying to use electron-vite-react ts template. But I have an error when I try to authenticate with firebase. I fill my credentials right,
I use the method of SDK :
import { signInWithEmailAndPassword } from "firebase/auth";

  const handleLogin = () => {
    const data = getValues();
    setIsLoading(true);
    if (data.email && data.password) {
      signInWithEmailAndPassword(auth, data.email, data.password)
        .then((cred) => {
          setIsLoading(false);
          console.log("user logged in:", cred);
        })
        .catch((err) => {
          console.log("error", err);
// throws the error here. Firebase: Error (auth/network-request-failed)
          setIsLoading(false);
          console.log(err.message);
        });
    }
  };

throws the error:
Firebase: Error (auth/network-request-failed)
I was watching the console and see the Request and response. And the server of firebase/auth validate correctly the user. But I don't get the data in the Frontend.  So I would think this is a vite problem. But I don't understand how could I solve it.
I have the repository here if you want to download it.
https://github.com/ivanandresdiaz/vite-electron-firebase

You can try Pre-Bundling firebase/auth
https://github.com/electron-vite/vite-plugin-electron/blob/14684ba108beec305edf4c9d8865527f6508f987/examples/nodeIntegration/vite.config.ts#L17-L26
    renderer({
      optimizeDeps: {
        include: [
          'firebase/auth',
        ],
      },
    }),


Windows Clang CI

seems clang on Windows optimizes away the fio_memcpy  cache in the reversed fio_memcpy logic. This in turn allows the loop to be vectorized in a way that breaks the reversed fio_memcpy logic... I'll try to fix it, not that the fio_memcpy fallback is often in use (for some reason it's faster than the alpine's memcpy in docker, but other than that the system's memcpy is usually best).


Proxying, Domains and Certificates

Our current solution relies on HAProxy but it lacks the following:

Support for multiple certificates (and therefore multiple domains) for multiple customers. It is, however, definitely possible to design a solution based on HAProxy to manage this use case,
HTTP/2 proxying: Currently, HAProxy doesn't proxy the HTTP/2 protocol, the only way is to rely on TCP proxy for this use case which is not possible in our case since we rely on HTTP protocol information for routing. This is also why today, Amplifier (AMP API Server) is not sitting behind the proxy but directly accessed.

Considering this, we have to rethink our proxying strategy. There are alternatives to HAProxy and we need to study the alternatives (such as nginx, traefik, etc.) and check which one would best fit our needs.

study updated on Confluence.


PVC section should include the annotations about creating a default storage class.

At least one example on this page should include the annotation for setting the default storage class on a kube cluster:
annotations:
  storageclass.kubernetes.io/is-default-class: "true"

That and maybe make a note about why we need to set the default storage class. I'm happy to update the docs myself, just wanted to make sure there was an issue to track it.

This is addressed: https://docs.pivotal.io/runtimes/pks/1-3/volumes.html#default-storage-class. Closing.


Lexer extras with lifetime parameters

It would be neat if non-'static lifetimes could be used in extras.
#[derive(Logos)]
#[logos(extras = Option<&'a str>)]
pub enum Foo<'a> {
    #[error]
    Error,
    #[token("bar", |lex| lex.extras.unwrap())]
    Bar(&'a str),
}

Currently, this fails to compile:

error[E0261]: use of undeclared lifetime name 'a
   |
10 | #[logos(extras = Option<&'a str>)]
   |                          ^^ undeclared lifetime

It seems that the derive macro gets confused by type parameters. Instead of expanding to impl<'s, 'a> Logos<'s> for Foo<'a>, the derive expands to impl<'s> Logos<'s> for Foo<'s>.
If I change extras to Option<&'s str>, it compiles. However, as a result, Logos<'source> is only implemented for Foo<'source>, not Foo<'a>, so it doesn't work as intended.

Relevant output of `cargo expand`
impl<'s> ::logos::Logos<'s> for Foo<'s> {
    type Extras = Option<&'a str>;
    type Source = str;
    const SIZE: usize = 2usize;
    const ERROR: Self = Foo::Error;
    fn lex(lex: &mut ::logos::Lexer<'s, Self>) {
        use ::logos::internal::{LexerInternal, CallbackResult};
        type Lexer<'s> = ::logos::Lexer<'s, Foo<'s>>;
        fn _end<'s>(lex: &mut Lexer<'s>) {
            lex.end()
        }
        fn _error<'s>(lex: &mut Lexer<'s>) {
            lex.bump_unchecked(1);
            lex.error();
        }
        #[inline]
        fn goto1_x<'s>(lex: &mut Lexer<'s>) {
            #[inline]
            fn callback<'s>(lex: &mut Lexer<'s>) -> impl CallbackResult<'s, &'s str, Foo<'s>> {
                lex.extras.unwrap()
            }
            callback(lex).construct(Foo::Bar, lex);
        }
        #[inline]
        fn goto2_at1_with3<'s>(lex: &mut Lexer<'s>) {
            match lex.read_at::<&[u8; 2usize]>(1usize) {
                Some(b"ar") => {
                    lex.bump_unchecked(3usize);
                    goto1_x(lex)
                }
                _ => _error(lex),
            }
        }
        #[inline]
        fn goto3<'s>(lex: &mut Lexer<'s>) {
            let arr = match lex.read::<&[u8; 3usize]>() {
                Some(arr) => arr,
                None => return _end(lex),
            };
            match arr[0] {
                b'b' => goto2_at1_with3(lex),
                _ => _error(lex),
            }
        }
        goto3(lex)
    }
}

Any updates on this?

Hey @lucat1, unfortunately, not. I don't have time myself to work on this, but I'd be happy to review any PR someone might suggest!

Thank you for the reply! I could take a stab at this, but I'm wondering, how would you want this to work?
I tried taking the macro output of the latest version of logos and modifying the impl from impl<'s> Logos<'s> for Foo<'s> to impl<'s, 'a> Logos<'s> for Foo<'a>, while also changing the lifetime of Option to Option<'a> accordingly in the macro output. Hopefully I understood this correctly and this is what @ExoticMatter expected to happen.
Unfortunately, I don't see any way to make this compile, as both lifetimes 'a and 's need to outlive each other. Thus, it looks to me like they must be the same lifetime. Isn't this the case?
I believe I can modify the logos macros to implement this, but I definitely need some guidance to understand how we're expecting this to behave.

Maybe that would be easier to discuss if you run cargo expand on a very basic example, then start trying to compile the new version with added modification?
You can also create a PR and leave if in draft if you prefer :)
I don’t have much idea on how to implement this, but I don’t see why the token lifetime would need to outlive the source lifetime…


Create github project board(s) for management

You guys are sometimes saying that x feature is on our roadmap, we are working on y feature on the Spectrum chat and Github issues. Some issues have working on it labels but not have anyone assigned to it. It seems you are open to working with the community too.
I think it may be a good idea to create github project board(s) for managing this repository. Users can easily track what is being in hold/in progress/done, also contributors can review and help the related issues.
Individual boards for documentation, roadmap and maybe maintenance(about internals) will be nicer than a single board in my opinion.
Also please see this article about managing open source project workflow.

Thank you for the suggestions!
I also think we need to find a way to put everything on track.
Github project may be a good option to manage this, I will review and discuss with our team member.


Make Sidings & Platform track Silver/Grey

Is your feature request related to a problem? Please describe.
Yellow and Red track is not very realistic
Describe the solution you'd like
Make Sidings and Platform track silver unless the player is holding the siding or platform track item in their hand
Additional Information
Similar to functionality found when handling speed rails.

I mean to say I like the idea.
Also hiding track nodes is another good idea.

This has been added. Thank you.


93 allow separate data weighting by partition

Concisely (20 words or less) describe the issue
This change allows for the D-M parameters to be partition specific.
Please Link issue(s)
#93
resolves #[add issue number number], resolves #[optional second issue number if more than 1 issue addressed.]
incremental progress here
What tests have been done? Upload any model input files created for testing in a zip file, if possible.
test input files attached.  Two dummy observations added that use different D-M parameter
What tests/review still need to be done? Who can do it, and by when is it needed (ideally)?
Has any new code been documented?
yes
If not, please add documentation before submitting the Pull Request.

[X] I have documented any new code added (or no new code was added)

is there an input change for users to Stock Synthesis?
conditional input change invoked by the use_lengthcomp flag

[x] Yes, there was an input change
conditional input change invoked by the use_lengthcomp flag

If so, please provide an example of the new inputs needed.
2 # use length composition data (0/1/2) where 2 invokes new comp_comtrol format
#_fleet partition mintailcomp addtocomp combM+F CompressBins CompError ParmSelect minsamplesize
 0 0 0.0001 4e-07 0 0 0 0 1
 1 1 0.0001 2e-07 0 0 1 1 1
 1 2 0.0001 3e-07 0 0 1 2 1
 -9999 1 0.0001 1e-07 0 0 0 0 1

Check which is true. This PR requires:

[ ] no further changes to r4ss
[ ] no further changes to the manual
[ ] no further changes to SSI (the SS3 GUI)
[ ] no further changes to the stock synthesis change log (new features, bug reports)

Describe any changes in r4ss/SS3 manual/SSI that are needed (if not checked):
r4ss modification needed for the fit_lencomp table to add three columns for the comp logL method and the potential D-M and MVT parameters;
data_weighting.zip
code needs to be mimicked in the age comp and Sz comp sections
If changes are needed in the change log, please fill in the table here:
see the Project Board
Additional information (optional):

I ran hake_2018 locally to try to detect the reason for the GHA failure.  Some tiny numerical differences and change in the parameter name for the D-M parameters were all that I noticed.

Before I add this partition capability to the age composition and gen_size composition, let me ask:  is it needed?  How likely is it that a user would have age comp for both discarded and retained fish?  For lengths, note that a user already could do discard lengths as length comp and retained lengths as gen_size, each with their own D-M parameters.
Rick

@Rick-Methot-NOAA, thanks for working on this.
I put it on the agenda for the NWFSC/SWFSC assessment meeting tomorrow morning to get feedback on the need to expand beyond length comps--I'm guessing that the answer is no.
I'll try to review the changes tomorrow or Thursday depending on travel timing and snow.

Feedback at assessment team meeting was that there are some assessments with a few years with ages from discarded fish (nobody could remember which stocks), but that it shouldn't be a problem to apply the status-quo assumption of equal weight to those discards as to the associated retained ages given that the influence of those samples is presumably pretty low.
There is some interested (at least from me, but I think maybe others), in trying out the separate weighting for discard lengths using the beta version of SS3 to see how different the estimates are and provide feedback in advance of the release. I should be able to do that tomorrow along with reviewing the Pull Request.

One additional comment:
These lines
https://github.com/nmfs-stock-synthesis/stock-synthesis/blob/9f5459c77993ae541cb017eff2190c449781cc0a/SS_write_report.tpl#L360-L361
used to be part of a simple table near the top of Report.sso because Comp_Err_L and Comp_Err_L2 were vectors:
Fleet_name:  Fishery_current Discard_historical Fishery_historical Fishery_tribal WCGBTS Triennial
Fleet_type:  1 1 1 1 3 3
Fleet_area:  1 1 1 1 1 1
Lencomp_error_type:  0 0 0 0 0 0
Lencomp_error_parms:  0 0 0 0 0 0
Agecomp_error_type:  0 0 0 0 0 0
Agecomp_error_parms:  0 0 0 0 0 0

However, those variables (Comp_Err_L and Comp_Err_L2) are now matrices with a row for each partition, so the table looks like this, where it's not clear to the user what each row means:
Fleet_name:  Fishery_current Discard_historical Fishery_historical Fishery_tribal WCGBTS Triennial
Fleet_type:  1 1 1 1 3 3
Fleet_area:  1 1 1 1 1 1
Lencomp_error_type:  0 0 0 0 1 1
 1 0 0 0 0 0
 1 0 0 0 0 0
Lencomp_error_parms:  0 0 0 0 3 4
 1 0 0 0 0 0
 2 0 0 0 0 0
Agecomp_error_type:  1 0 0 0 1 0
Agecomp_error_parms:  5 0 0 0 6 0

This matrix output is present even for models that don't use either the D-M likelihood or separate weighting by partition.
Could we consider a different format for this table to make it clear what each row represents?

Ian,
Thanks for the very thorough review.  I'll be able to get all of this updated this week.

I finally got r4ss working with partition weighting for one model in https://github.com/r4ss/r4ss/commit/bdf9ed671b1701458973d7b7704292d82e8e9d03. The changes were extensive because there was layer upon layer of clunky stuff related to D-M likelihoods and parameters that was overdue to get cleaned up (we were still reading the data file to get info on which D-M parameter went with which fleet because many SS3 versions ago that info wasn't available in the Report.sso).
If the r4ss changes pass the r4ss tests and I don't discover any big issues when testing on a few older versions of SS3, then I will merge the changes into the r4ss main branch so that we can get the SS3 checks working.
Alternatively we could create a branch of the "workflows" repo and change test-r4ss-with-ss3 to point to the "partition-weighting" branch in r4ss AND change the call-test-r4ss-with-ss3 workflow in this "stock-synthesis" branch (93-allow-separate-data-weighting-by-partition) to use the branch of "workflows". But all that seems like more work than just making sure I didn't break r4ss and merging that first.

The r4ss fix for these partition weighting changes is finally complete in a new branch and @e-gugliotti-NOAA is on deck to review the Pull Request https://github.com/r4ss/r4ss/pull/766 and merge tomorrow which will facilitate the final testing via SS3 github actions.
I also just pushed an addition commit 48af932 to this SS3 branch which provides a default minsample size value 0.001 to avoid the warning minimum sample size for length comps must be > 0; minimum sample size set to 0.001 appearing for combinations of fleet and partition which don't have minsamplesize provided because they don't have any data. @Rick-Methot-NOAA, let me know if that changes doesn't look OK to you--I didn't bother to create an additional branch and pull request to this branch.

Good addition regarding minsampsize.  User could accomplish this by filling all rows with the -fleet option, but they may not do that, so your addition is safeguard.

@iantaylor-NOAA I just re-ran the test r4ss workflow and it is not passing. Looks like a dplyr issue is at least one problem. See failed workflow here

@Rick-Methot-NOAA, I think you can merge this now.
@e-gugliotti-NOAA got the remaining r4ss bugs worked out and the automated checks of the r4ss on the test-models repository models are now passing as well as local tests on a model with partition weighting.
We may want to add a model to the test-set that has partition weighting, or at least switch one of the existing models to make sure of the input associated with data file setting:
2 # use length composition data (0/1/2) where 2 invokes new comp_control format
I'll add this to the list in https://github.com/nmfs-stock-synthesis/test-models/issues/29.

Thanks Ian and Elizabeth.  Seems like the r4ss work was bigger than the SS3 work.  I will merge now and I endorse adding a model with this feature to the test set.  But let's also think about other features that are not represented in the test set and implement them in the same test model.


test: set GKE cidr range when creating clusters

The default value is larger than what is required. This sets the default CIDR range to a more reasonable value. This helps fit a greater number of clusters into a network, particularly for CI use cases.

/assign @karlkfi


Can't adduser on aws ec2 istance

My reason:
adduser will hang indefinitely after entering username password and email.
Steps to reproduce:
When running npm adduser --registry http://external-aws-ec2.com:4873. Right now the only ports allowed on the server are 4873 inbound and ssh.
App Version:
2.3.6
Config file:
default
Additional information:
Running verdaccio with DEBUG=express:* i don't see any request incoming when i confirm my credentials with adduser by pressing return.
Perhaps verdaccio uses a different port for authentication?

configuration file is missing

It's the default config file:
#
# This is the default config file. It allows all users to do anything,
# so don't use it on production systems.
#
# Look here for more config file examples:
# https://github.com/verdaccio/verdaccio/tree/master/conf
#

# path to a directory with all packages
storage: ./storage

auth:
  htpasswd:
    file: ./htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    #max_users: 1000

# a list of other known repositories we can talk to
uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $all

    # allow all known users to publish packages
    # (anyone can register by default, remember?)
    publish: $authenticated
    proxy: npmjs

  '**':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $all

    # allow all known users to publish packages
    # (anyone can register by default, remember?)
    publish: $authenticated
    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

# log settings
logs:
  - {type: stdout, format: pretty, level: http}
  #- {type: file, path: verdaccio.log, level: info}

Yeah, you never know :) ... but therre is only one port, no special conf for auth. It seems a network issue or some AWS black magic. Try to reach any of the endpoints using wget or curl .

OK! Issue solved. Not AWS black magic by my misunderstanding. I just needed to add
listen: <IP_ADDRESS>:4873 to the config file, as clearly stated here.

Ok 😅 that is right. Cool !!


Don't git stash when linting

gofmt is checked as part of golangci, so the formatting during lint is only really needed for go.mod/sum. It is better to restrict the diff check to those files than use git stash, git stash doesn't work well when files aren't formatted since it will try to restore the stash onto files that have changed during the format and fail to do so. Maybe a way to tweak that, but no need

Codecov Report
Base: 73.70% // Head: 73.70% // No change to project coverage :thumbsup:

Coverage data is based on head (352428e) compared to base (3ca29ca).
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##           v3/dev     #479   +/-   ##
=======================================
  Coverage   73.70%   73.70%
=======================================
  Files         145      145
  Lines        6622     6622
=======================================
  Hits         4881     4881
  Misses       1466     1466
  Partials      275      275

Flag
Coverage Δ

no-tinygo
73.64% <ø> (ø)

overall
73.70% <ø> (ø)

tinygo
72.39% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Fixed: everthing and added header component in the FAQ

Hey vansh now i have  added header in the FAQ and removed the error of chat bot now merge it in the main branch if any feature is missing don't worry i will create @vanshchauhan21 , fast merged it and whatever the feature and styling is missing i am going to create new issue and again work on it today i will improve your website next level
fixed: #102
https://github.com/user-attachments/assets/11392b1a-2de3-4f15-b55d-ee71b63b6971

Hey @vanshchauhan21,
I’ve resolved all issues locally, and the project is running perfectly on my branch feature/add-header-in-FAQ. The problem seems to be that the upstream codebase contains extra features (like a chatbot), which I’ve removed since they were causing conflicts. This is why the codebases aren’t aligning, and the merge conflict is appearing.
To resolve this quickly, I suggest taking my entire code from feature/add-header-in-FAQ and replacing the upstream version. If merging isn’t working smoothly,


More explanations

So - I thought I had an idea of what this library does, but after playing with the example, I'm really at a loss. Can you explain more what this library does - perhaps in the readme.md so others see it as well?

+1

I have updated the README, can you tell me whether it is now clearer.

Yes. So in a way, it is a bit like AntiSammy? Is it smart enough to say, "tag so and so is ok but not attribute so and so"?

No it doesn't have any smarts the user must configure the whitelist.
We use it to create a subset of markup we wish to support in our content model.

Fair enough. I think you an close this now. I don't think this makes sense for Brackets now. (To be clear, I still think this is a cool library, but I don't see how it would be useful as an extension for an editor. :)


Get rid of gratuitous mem::replace.

Nittiest of nit picks.

Actually, why are you even doing this? Are you trying to avoid dropping the job_sender? If so, this isn't the way to do it. You should use unsafe { ptr::write(&mut self.job_sender, None) }  or mem::forget(mem::replace(&mut self.job_sender, None)).

Or are you trying to make drop idempotent?

Ah, seems like the comment explaining that got lost somewhere along the way. I'm not 100% on this myself right now, but this stems from the original scoped v2 proposal and is supposed to drop the field before the type containing it, due there being a change of a deadlock or so.

I don't think that applies in this case. The only thing I can think of is that if you drop the thread pool while writing to the channel, the channel will block indefinitely. However, that isn't possible here.

In any case the use of replace is unneeded here, so I'll just merge this, thanks!


Energy Saver

It seems that this screensaver overwrites the "Turn display off after:..." - please can you look into that? At night it is convenient if the display turns off.
Thanks for a great product!

@klauslovgreen If the display doesn't turn off you are likely using an older version. That was a bug which John resolved a while ago. Please try the latest version and let us know how you get on.
https://github.com/JohnCoates/Aerial/releases/tag/v1.2beta5

Thanks - yes that did the trick.


Refactor DoneProposal component to support mobile responsive #867

Fix #867

cannot load votes page

@pingustar

It seems work on my side although slow loading initially. maybe another issue?


Add the 'compile' goal for 'compile-java9'

and update to a newer version of bnd for multi-release jar support, see https://github.com/bndtools/bnd/issues/2227.

@sgammon does this look reasonable to you?
Without this change I'm not seeing the compile-java9 step added in https://github.com/google/error-prone/commit/0e9536471b6b8e7e03d29584eceb8a0e0f3240d7 get executed, and the META-INF/versions/9/ classes aren't ending up in the artifact.

Hmm, the version of bnd that supports mr-jars requires JDK 17:
Error:  Failed to execute goal biz.aQute.bnd:bnd-maven-plugin:7.0.0:bnd-process (generate-OSGi-manifest) on project error_prone_parent: Execution generate-OSGi-manifest of goal biz.aQute.bnd:bnd-maven-plugin:7.0.0:bnd-process failed: Unable to load the mojo 'bnd-process' in the plugin 'biz.aQute.bnd:bnd-maven-plugin:7.0.0' due to an API incompatibility: org.codehaus.plexus.component.repository.exception.ComponentLookupException: aQute/bnd/maven/plugin/BndMavenPlugin has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0

@cuson Whoops! I can't believe that wasn't running. I thought I verified the JAR output. I'll check locally with this change applied and verify it with Guava downstream.
Re/BND, the JAR is a MRJAR is assembled by the JAR step, and BND tools isn't aware of it. I don't think it needs to be aware of it. There are BND directives for generating module-info.java, but we have a definition so we don't need to generate one.
As far as BND loading MRJARs, I know that support is lacking there too, but the classes under META-INF/versions should be identical anyway and only consist of module-info.class.

@cushon Adding this directive to the BND tools fixes the build issue with classes in the MRJAR root:
-fixupmessages: ^Classes found in the wrong directory: .*

The final block in root pom.xml is:
              <bnd><![CDATA[
                Bundle-SymbolicName: com.google.$<replacestring;$<replacestring;${project.artifactId};^error_prone;errorprone>;_;.>
                Automatic-Module-Name: $<Bundle-SymbolicName>
                -exportcontents: com.google.errorprone*
                -noextraheaders: true
                -removeheaders: Private-Package
                -fixupmessages: ^Classes found in the wrong directory: .*
              ]]></bnd>

I'm just starting my day, so I'll be around. If you want me to push a PR to fix this let me know

@cushon While you're at it, please remove requires java.base; from module-info.java. Every module requires java.base. Specifying it is like specifying import java.lang.*;.

@cushon A quick patch, I've verified it includes the classes and only the module-info.class (trying to prevent duplication of the actual classes)
diff --git a/annotations/pom.xml b/annotations/pom.xml
index 39a0627585..e68d412cbc 100644
--- a/annotations/pom.xml
+++ b/annotations/pom.xml
@@ -64,6 +64,9 @@
           </execution>
           <execution>
             <id>compile-java9</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <configuration>
               <source>9</source>
               <target>9</target>
@@ -82,6 +85,9 @@
               <Multi-Release>true</Multi-Release>
             </manifestEntries>
           </archive>
+          <excludes>
+            <exclude>/META-INF/versions/9/com/**/*.class</exclude>
+          </excludes>
         </configuration>
       </plugin>
     </plugins>
diff --git a/pom.xml b/pom.xml
index f7cad3c75b..7c0fc99120 100644
--- a/pom.xml
+++ b/pom.xml
@@ -153,6 +153,7 @@
                 -exportcontents: com.google.errorprone*
                 -noextraheaders: true
                 -removeheaders: Private-Package
+                -fixupmessages: ^Classes found in the wrong directory: .*
               ]]></bnd>
             </configuration>
           </execution>

@anthonyvdotbe I was under the impression that all Java modules had to depend on java.base? That's why it's there. Is that not the case?

I'm seeing the JDK 11 failure @cushon. I think I have a fix for that too.

Okay. Thank you @anthonyvdotbe, I learned something today.
The java.base module is not required to be stated in module-info.java. The JDK 11 failure happens because BND tries to load those classes, but we can make them inert instead:
This patch

Removes java.base
Fixes compile goal
Excludes Java 9 classes but includes module-info.class
Excludes META-INF from BND (see !META-INF...)
Applies the fixupmessages to BND

diff --git a/annotations/pom.xml b/annotations/pom.xml
index 39a0627585..e68d412cbc 100644
--- a/annotations/pom.xml
+++ b/annotations/pom.xml
@@ -64,6 +64,9 @@
           </execution>
           <execution>
             <id>compile-java9</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
             <configuration>
               <source>9</source>
               <target>9</target>
@@ -82,6 +85,9 @@
               <Multi-Release>true</Multi-Release>
             </manifestEntries>
           </archive>
+          <excludes>
+            <exclude>/META-INF/versions/9/com/**/*.class</exclude>
+          </excludes>
         </configuration>
       </plugin>
     </plugins>
diff --git a/annotations/src/main/java/module-info.java b/annotations/src/main/java/module-info.java
index 72215b7677..4c9077dd52 100644
--- a/annotations/src/main/java/module-info.java
+++ b/annotations/src/main/java/module-info.java
@@ -15,7 +15,6 @@
  */

 open module com.google.errorprone.annotation {
-  requires java.base;
   requires java.compiler;
   exports com.google.errorprone.annotations;
   exports com.google.errorprone.annotations.concurrent;
diff --git a/pom.xml b/pom.xml
index f7cad3c75b..3dc704b4f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -150,9 +150,10 @@
               <bnd><![CDATA[
                 Bundle-SymbolicName: com.google.$<replacestring;$<replacestring;${project.artifactId};^error_prone;errorprone>;_;.>
                 Automatic-Module-Name: $<Bundle-SymbolicName>
-                -exportcontents: com.google.errorprone*
+                -exportcontents: com.google.errorprone*,!META-INF.*
                 -noextraheaders: true
                 -removeheaders: Private-Package
+                -fixupmessages: ^Classes found in the wrong directory: .*
               ]]></bnd>
             </configuration>
           </execution>

Thanks @sgammon! I pushed another commit that includes the additional changes.


Optimization

Turns out rolling your own generated assembly is hard, and I've done no work to make it fast and have only focused on making it functional.
Having started writing the self-hosted compiler again, its evident that Haystack is very slow.
I'm of a few minds here.

Learning to do the optimization passes sounds interesting
Learning LLVM is probably more practical, and I can use a forth compiler as an example setting up the stack in LLVM.

Overall, this needs a bunch of consideration to figure out what the best way to go will be.

duplicate of #119


fix for issue #85

fix for issue #85 -> updated links to refer to RFC 7946 in documentation

Codecov Report

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

@@           Coverage Diff           @@
##           master      #96   +/-   ##
=======================================
  Coverage   81.23%   81.23%
=======================================
  Files          12       12
  Lines         325      325
  Branches       60       60
=======================================
  Hits          264      264
  Misses         51       51
  Partials       10       10

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 e1c3971...cc53edb. Read the comment docs.

Thanks!


[QUESTION] Filling a polygon with hatch style

I'm trying to fill a polygon with fill hatch style and border, but it looks like drawn paths doesn't fit. What am I doing wrong? 😓
Thanks!
Code:
SKBitmap skBitmap = new SKBitmap(pictureBox.Width, pictureBox.Height);

float xCenter = pictureBox.Width / 2;
float yCenter = pictureBox.Height / 2;
float side = 250.0f;

var path = new SKPath();
path.MoveTo(0, side / 2);
path.LineTo(side / 2, 0);
path.LineTo(side, side / 2);
path.LineTo(side / 2, side);
path.Close();

float scale = 16.0f;
var scaleMatrix = SKMatrix.MakeScale(scale, scale);

var fillPaint = new SKPaint
{
       Color = SKColors.Blue,
       StrokeWidth = 0.5f,
       PathEffect = SKPathEffect.Create2DLine(2.0f, scaleMatrix)
};

var paint = new SKPaint
{
        Color = SKColors.Red,
        Style = SKPaintStyle.Stroke,
        StrokeWidth = 2.0f
};

using (var canvas = new SKCanvas(skBitmap))
{
         canvas.Translate(xCenter - (side / 2), yCenter - (side / 2));
         canvas.DrawPath(path, fillPaint);
         canvas.DrawPath(path, paint);
}

fillPaint.Dispose();
paint.Dispose();

pictureBox.Image = skBitmap.ToBitmap();

Result

I could fix it using:
var scaleMatrix = SKMatrix.MakeScale(1.0f, scale);


Local development improvement request

Would it be possible to have enabled (boolean) property?
Use case:
When developing on localhost, it would be good option to set [enabled]="environment.production" disable functionality of widget. Otherwise, it must be used like this:
@if (environment.production) {
  <ngx-turnstile [(ngModel)]="token" />
}

which makes form.value.token undefined in template driven form.
Suggested solution:
<ngx-turnstile [(ngModel)]="token" [enabled]="environment.production" />

So far, we have not encountered a situation where it should be disabled in development mode. Since our backend always have the validation code, we opted in to put in test keys on both frontend and backend so the validation always succeeds: https://developers.cloudflare.com/turnstile/troubleshooting/testing/
Does this work for your use case? If not, can you tell me more about why you need to disable the widget in development mode?

Yes, that would work in my case. Thank you.


Fix the included file in tests for the hello world template

What this PR solves / how to test
Create a new project using typescript and then run tsc -p test to run typechecking on the tests.
Author has addressed the following

Tests

[ ] TODO (before merge)
[ ] Included
[x] Not necessary because: tsconfig.json change

E2E Tests CI Job required? (Use "e2e" label or ask maintainer to run separately)

[ ] I don't know
[ ] Required / Maybe required
[x] Not required because: tsconfig.json change

Changeset (Changeset guidelines)

[ ] TODO (before merge)
[x] Included
[ ] Not necessary because:

Public documentation

[ ] TODO (before merge)
[ ] Cloudflare docs PR(s):
[x] Not necessary because: it only fixes a mistake in the C3 template

@stof can you please add a changeset and resolve merge conflicts? thanks!

hi @stof
this PR is ready to merge, Can you please rebase on latest main so I can go ahead with the merge 🙏 ?


Merge plugin

Is your feature request related to a problem? Please describe.
Ionic users are all using the good old cordova-plugin-firebase Ionic Native firebase
Which is not a good solution as described here: Issue 3038
Your repository and  the dpa99's repository are trying to achieve the same thing.
Describe the solution you'd like
Merge both repository would be ideal.
Describe alternatives you've considered
Not merge, and create an ionic native "plugin" with only one repository. This solutions leads to dupplication of solutions and the end of the unchoosen plugin, which is sad as you both seems invested into this plugin.
Additional context
I also posted on dpa99 repo

I think more the ionic documents need to be updated to push people to the new way.

Hi @hugoblanc, we are more than happy to archive this repository and send users to dpa99 repo. I understood your concern about users diverting to two different repositories and about Ionic native wrapper towards it.
Yes, our starting intention was to fix the build due to Firebase breaking release and later on we started maintaining it with some small & breaking changes (to use latest versions).
But I'm concerned about the Ionic's native wrapper of this plugin. In the recent releases of Dave, he has changed the name so I think, those will not work with TypeScript Ionic wrapper so it would be problematic for Ionic developers to use that version. Correct me if I'm wrong.
So what we can do, we can freeze this repository in the current version so Ionic 3 users can also use it along and later Dave can also fork & update the APIs in the Typescript wrapper and he can keep maintaining his repository.
Please, let me know your thoughts.


Exception on passing in c++ or cpp

Issue
Noticed the output when running the Embeddinator exe:
--gen=VALUE            target generator (C, C++, Obj-C, Java, Swift)

And noticed the command line argument to pass in c++/cpp in the CLI.cs:
static GeneratorKind ConvertToGeneratorKind(string gen)
{
    switch(gen.ToLowerInvariant())
    {
    case "c":
        return GeneratorKind.C;
    case "c++":
    case "cpp":
        return GeneratorKind.CPlusPlus;
    case "objc":
    case "obj-c":
    case "objectivec":
    case "objective-c":
        return GeneratorKind.ObjectiveC;
    case "java":
        return GeneratorKind.Java;
    case "swift":
        return GeneratorKind.Swift;
    }
    throw new NotSupportedException("Unknown target generator: " + gen);
}

However, the CreateGenerator in Driver.cs throws a NotImplementedException:
Generator CreateGenerator()
{
    Generator generator = null;
    switch (Options.GeneratorKind)
    {
        case GeneratorKind.C:
            generator = new CGenerator(Context);
            break;
        case GeneratorKind.ObjectiveC:
            generator = new ObjCGenerator(Context);
            break;
        case GeneratorKind.Java:
            generator = new JavaGenerator(Context);
            break;
        case GeneratorKind.Swift:
            generator = new SwiftGenerator(Context);
            break;
        default:
            throw new NotImplementedException();
    }

    return generator;
}

Expected Behavior
In my opinion, the option shouldn't be allowed to be passed in, even if it is simply going to throw an exception
Environment

Latest Master branch
Visual Studio 15.9 Preview 1.0 / Windows 10 Pro

I can make a PR for this if the expected behavior is in line with what I am thinking.

@jcapellman what you mention makes sense. I think that the best way to start the conversation would be to create a PR, specially when the project is open sourced. I'll tag the issue with the correct labels to bring this to the attention of the right people. Thanks a lot for the detailed description!


Added hint about the port to example

Just adding a helpful hint that everything works and where things are ;)

Thank you!


Associate Lead to Parent Contact

Can I use Associate Entity in a Lead workflow to set the Parent contact of a lead? I am able to get the Record URL of the Contact I want to reference using Query Values. Using that Record URL, does Associate Entity work for 1:N parent relationship or is there another way of doing this?

Hi findleybc, The associate action is only for N-N relationship creation.
regards,


Cloud Function to update monthly budget per project bq table.

New cloud function to update monthly budget table used by metamist billing dashboard.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

:exclamation: No coverage uploaded for pull request base (main@63f8278). Click here to learn what that means.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #178   +/-   ##
=======================================
  Coverage        ?   88.04%
=======================================
  Files           ?        4
  Lines           ?      393
  Branches        ?        0
=======================================
  Hits            ?      346
  Misses          ?       47
  Partials        ?        0

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


FileNotFoundError for madmax 'chia_plot'

This is probably user error, but wanted to report this just in case.
When configuring plotman 0.5 to use madmax, it's unable to find the command 'chia_plot'. When I was using madmax by itself, I was referencing it via its fully qualified path, so at first I thought an alias might fix it, but it did not. Eventually I ended up modifying manager.py to fully qualify the path to the chia_plot command, which did finally work.
(venv) tyler@chiaplotter:~/chia-blockchain$ plotman interactive
Traceback (most recent call last):
  File "/home/tyler/chia-blockchain/venv/bin/plotman", line 8, in <module>
    sys.exit(main())
  File "/home/tyler/chia-blockchain/venv/lib/python3.8/site-packages/plotman/plotman.py", line 243, in main
    interactive.run_interactive(
  File "/home/tyler/chia-blockchain/venv/lib/python3.8/site-packages/plotman/interactive.py", line 352, in run_interactive
    curses.wrapper(
  File "/usr/lib/python3.8/curses/__init__.py", line 105, in wrapper
    return func(stdscr, *args, **kwds)
  File "/home/tyler/chia-blockchain/venv/lib/python3.8/site-packages/plotman/interactive.py", line 129, in curses_main
    (started, msg) = manager.maybe_start_new_plot(
  File "/home/tyler/chia-blockchain/venv/lib/python3.8/site-packages/plotman/manager.py", line 227, in maybe_start_new_plot
    p = subprocess.Popen(plot_args,
  File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
Traceback (most recent call last):
  File "/home/tyler/chia-blockchain/venv/bin/plotman", line 8, in <module>
    sys.exit(main())
  File "/home/tyler/chia-blockchain/venv/lib/python3.8/site-packages/plotman/plotman.py", line 243, in main
    interactive.run_interactive(
  File "/home/tyler/chia-blockchain/venv/lib/python3.8/site-packages/plotman/interactive.py", line 352, in run_interactive
    curses.wrapper(
  File "/usr/lib/python3.8/curses/__init__.py", line 105, in wrapper
    return func(stdscr, *args, **kwds)
  File "/home/tyler/chia-blockchain/venv/lib/python3.8/site-packages/plotman/interactive.py", line 129, in curses_main
    (started, msg) = manager.maybe_start_new_plot(
  File "/home/tyler/chia-blockchain/venv/lib/python3.8/site-packages/plotman/manager.py", line 227, in maybe_start_new_plot
    p = subprocess.Popen(plot_args,
  File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'chia_plot'

Modified line in manager.py that works:
if plotting_cfg.type == "madmax":
                if plotting_cfg.madmax is None:
                    raise Exception(
                        "madmax plotter selected but not configured, report this as a plotman bug",
                    )
-                 plot_args = ['chia_plot',
+                 plot_args = ['/home/tyler/madmax/chia-plotter/build/chia_plot',
                    '-n', str(1),
                    '-r', str(plotting_cfg.madmax.n_threads),
                    '-u', str(plotting_cfg.madmax.n_buckets),
                    '-t', tmpdir if tmpdir.endswith('/') else (tmpdir + '/'),
                    '-d', dstdir if dstdir.endswith('/') else (dstdir + '/') ]
                if dir_cfg.tmp2 is not None:
                    plot_args.append('-2')
                    plot_args.append(dir_cfg.tmp2 if dir_cfg.tmp2.endswith('/') else (dir_cfg.tmp2 + '/'))

Not sure if this is relevant, but I updated both plotman and madmax to their latest versions today after being about 2 months out of date on both.
Is there some other method of telling linux (other than an alias) or even python that chia_plot should refer to a specific path? Am I missing something with setting up madmax? Or should plotman be configurable to set a custom path to chia_plot?
Thanks!

The "quick" way would be to run PATH=/home/tyler/madmax/chia-plotter/build:$PATH plotman interactive.  The better way would be to add that to your path permanently in your ~/.profile.  You have to logout and back in to get the change in effect everywhere.  plotman will likely also get the ability to specify the path explicitly in the configuration file (https://github.com/ericaltendorf/plotman/pull/823).

Oh right, PATH! Thanks so much, worked like a charm.
For anyone who finds this later, I'm not sure if it mattered or not, but I noticed all the existing PATH additions in my .profile were wrapped in quotes, like PATH="/home/tyler/madmax/chia-plotter/build:$PATH" so I added it like that at the bottom of the file.


User roles micdra7

Hi there @micdra7, please pull the newest master and resolve conflicts. We want to check your commit :)

@Siemko got it done :)

@Siemko I've fixed all the issues you mentioned


chore(test): Add test cases for pkg/home/auth.go

Description
There is no test case for auth. We should add the corresponding test cases for auth part similar to pkg/home/context_test.go

Message from the maintainers:
Love this enhancement proposal? Give it a 👍. We prioritise the proposals with the most 👍.

/assign


Store combining class in a static byte array

This is the first step to #41, introducing a static byte array for combining classes. There are no changes in other areas, so NormalizeStream still queries this array twice (both for isCombining check and for getCombiningClass), but, surprisingly, performance became better in several cases.
Ideally, we would unify this array to cover isDecomposable property as well (represented as combining class 255, see Section 14.1.3), but since there are two ways to decompose (NFD and NFKD), such change would involve quite a lot of restructuring, which I do not have time to dive into right now, unfortunately.
 I will probably get some time on next weekend. I will try making use of it you don't do it until then.

I will not be able to get back to this until Sep. I guess we can be a bit lazy on this one as we have already pushed several good perf improvements in the upcoming release.


Skylighting/Pandoc problems with .classes and --color

Pandoc Skylighting limititations
Other people have complained about this
Some of the colours are just plain wrong.
Partly my fault, partly Pandoc's.
See the live code here

Making sure the colours are correct for Markdown code blocks isn't a very easy problem to solve, as it's somewhat limited to the way Pandoc's Skylighting renders it's HTML. Some bits of syntax that should be given a class such as .arguments, for instance are simply given a generic .function class.
Take this Elm code block for instance:

The colors also differ from Visual Studio Code's version of Monokai, but due to the way Pandoc's Skylighting structures it's code block HTML, it's going to be very difficult (if not impossible) to mimic. A simple example is how it renders "default" colours.
My default colour is white which covers characters such as :, [] and (). Visual studio code highlights some of these characters — it's just not possible with Pandoc's Skylighting as it doesn't wrap these characters in <spans> with .class names.

Other Skylighting issues

[ ] #52
[ ] #67
[ ] #107
[ ] #94
[ ] #95
[ ] #127

For Elm code, Pygments isn't much better:

Python seems better:


Is thedocker-compose-kubernetes still valid?

Should we include the instructions in this readme in our documentation or remove the reference?
[Reference was in the quick start kubernetes.md guide.]

The reference has been removed.


Update module to elm 0.18

Could you please upgrade your module to elm 0.18?
This will update the module to elm version 0.18
It will thereby no longer work for elm 0.17
I suppose that can be fixed to add the elm and core version accordingly but that is up to you.
Cheers

👍

👍


Third party documentation

I would suggest adding a note in intro.rst linking to third party squirrel documentation.
Useful resources I found are:

http://www.squirrel-lang.org/squirreldoc/index.html
The official Squirrel documentation. Very useful for experienced and inexperienced users alike. It should be mentioned that Respawn has made some changes to Squirrel so not all information applies.
https://developer.electricimp.com/squirrel
Squirrel documentation for ImpOS. This appears to be from a company that sells hardware, software and solutions related to Internet of Things.
The documentation provided is for the version of Squirrel ImpOS uses and is therefore different in some places. For example, Electricimp's version of Squirrel includes some libraries out of the box.
However the documentation is still very useful and in-depth. I think this documentation may be easier to understand for beginners.

Both of these link to Squirrel 3 docs, while TF|2 uses Squirrel 2

While i think its a nice idea, RSquirrel is just too different from regular squirrel in many important ways, and good docs for 2 are hard to come by. Closing this issue for now.


Debugger in sublime text C++

hello,
Is it possible to use a debugger in sublime text 3 for C++? I tried a lot of things without success. If anyone knows how please write instructions :)

There is an example configuration for lldb https://github.com/daveleroy/sublime_debugger/tree/st3/examples/cpp


Define / expand "TSS/App/Device attestation"

From https://github.com/riscv-non-isa/riscv-security-model/blob/8625adfaf993958f12784b8e3cd2a760b4086d6c/specification/src/chapter2.adoc?plain=1#L575-L576 In particular TSS is not defined.

Fixed in this PR (deleted obsolete term "TSS"):
https://github.com/riscv-non-isa/riscv-security-model/pull/26


Collateral dialog precision and editing issues

The collateral position dialog has precision issues.  E.g. with feed at 0.0995 USD/CORE, borrowing $10 at a collateral ratio of 2 sets collateral to 1.9900000000000002 CORE.
Here are all the problems I found in 5 minutes of playing with this dialog:

Asset precision is wrong, 2x collateral should be 201.0051 (exact number is about<PHONE_NUMBER>2562812 by my calculations, but this should be rounded up, see next point).
You should round up to the next-highest satoshi, that way if you set the slider at exactly the required collateral amount, you won't get an invalid transaction.
The feed price is not flipped in a flipped market.
Displays last decimal place far in excess, you are using floats somewhere.  Ideally you only use integer arithmetic.  If that's not feasible, at least truncate the decimal result of floating-point arithmetic.
Selecting either text field should highlight the existing text, so if you click on a field and start typing, it will replace the text with what you type.
The fields annoyingly undo your edits if the result of an edit would be an invalid value.  So if you have "15" in the "Amount to borrow" field, select all the text (which should happen automatically as per the previous point), and type "0.25", the result is "15.25".  Similarly, the backspace / delete key cannot delete the last nonzero character of an amount.  Problems typing amounts that begin with "0." or "." will be particularly problematic for BitAssets such as BitBTC which have a high enough unit value that borrowing fractional amounts is economically practical for small-time users.  My preference as a user is to never have the UI directly edit what I enter, because that's a recipe for me to blame executing an order with (potentially financially disastrous) unintended values on the UI's behavior.  If I give the UI something invalid, it should tell me when I go to confirm the action, and give me a little warning icon next to the invalid field.  (The warning icon is non-essential, but it makes the UI feel really slick and polished if you have it, because it lets me fix mistakes as they're entered, which is less cognitive load than finding out they're invalid at the very end and then having to go back.)
The required maintenance level of collateral should be displayed.
The drop-downs for asset names are pointless as they only give me one choice.
Each of the three fields should have a "lock" icon allowing that field to be locked.  Locking a field should unlock the others (so only one field can be locked at a time).  Then adjusting either unlocked field will update the other unlocked field.  This addresses the common use case of maintaining the same collateral ratio, with this UI you'd be able to just lock the collateral slider and enter the new position amount.  The unlocked field should be rounded correctly (collateral up, borrow amount down) to produce a valid transaction when the slider is exactly at the minimum required collateral level.

The precision thing is a hassle all around, we get javascript floating point errors like that from the simplest of calculations.. I guess we can try rounding to next-highest satoshi.
What exactly constitutes a flipped market here? The feed price is only given one way and there's no reference as to what's flipped or not.. You can click on any price and it'll flip, that's the easiest way we've found to deal with this. They're even reversed between them, the core exchange rate and settlement_price are flipped with respect to each other. In general it's also a hassle to reason about..
I've assumed the required maintenance level value of 1750 is a ratio of 1.75, is that right?
I like the lock option, and will see what I can do about the rest.

I submitted a PR that introduces fixes the calculation bug by introducing round the collateral value to the precision of the CORE asset.

Please close @svk31 if this has been addressed. I see a commit.

Parts of it have been adressed and many changes have been made to the Modal since that time, so I'd say the Modal is good enough as is. As there are more important things to work on I'm pushing this back a couple milestones.

Sounds good. @theoreticalbts can you make a note to review this after 1225 is released to let us know if this is resolved in you opinion?

Closing since no response from @theoreticalbts


Thermostat temperature does not get set

Followed documentation to setup plugin in Homebridge. When I go to set the temperature for the Wyze thermostat it does not get set on the device itself. I reload the home app and my change gets reverted. I am able to change the state just not the temperature
I have installed different versions and tried to modify the code with my limited knowledge. It has always been reproduceable on my instance
When I set the temperature in the Home app the device will reflect the change
There is nothing in the logs as far as I can tell.
    {
        "name": "Wyze",
        "username"<EMAIL_ADDRESS>        "password": "password",
        "refreshInterval": 60000,
        "entryExitDelay": 30,
        "mfaCode": "502640",
        "showAdvancedOptions": true,
        "excludeMacAddress": false,
        "excludedeviceType": true,
        "filterDeviceTypeList": [
            "Camera"
        ],
        "platform": "WyzeSmartHome"
    }

Plugin Version: 0.5.28
Homebridge Version: v1.6.1
Node.js Version: v18.16.0
NPM Version: 9.5.1
Operating System: Debian 10

@carTloyal123 Have you seen anything like this with the Thermostat?

@jfarmer08 Any I can grab from my end to help?

Can you turn on debug and send me the full log?

I have not seen this be an issue before as far as I remember. Some logs would be great! I suppose it’s possible something has changed recently on theWyze side but I haven’t seen any device updates to suggest that.

I turned debug on and got the logs. You can see around line 60 I set the temperature in the home app. I closed it and reopened it and it reverted to the original status.
homebridge.log.txt

More weird behavior. When I change it in the Home app it just immediately reverts the change now.
[7/9/2023, 9:55:11 AM] [Wyze] [Thermostat] Getting targetTemperature status of "Wyze Thermostat" to 75 [7/9/2023, 9:55:11 AM] [Wyze] Thermostat Target Temp: 76 [7/9/2023, 9:55:11 AM] [Wyze] Thermostat Cool Setpoint: 76 [7/9/2023, 9:55:11 AM] [Wyze] Thermostat Heat Setpoint: 68

@xenonaxel  So it is working or its not working?

@jfarmer08 it is not working. The temperature still resets. It seems to switch between not ever taking the change or saying it changed but after I reopen the app it doesn't. as @carTloyal123 mentioned I don't think it's been set in the plugin. From my understanding of the logs it just queries the device again to get the current temperature instead of updating it.
Another thing I noticed in the logs is it keeps saying pulling cached device for the wyze thermostat but does not happen for any other device

And what about other automations and the mode you are trying to use for your system? @xenonaxel

@carTloyal123 Sorry forgot to add that to the reply. I am not using anything in addition to homebridge to automate my Wyze Thermostat. It doesn't seem to matter the mode. AC, Heat or Auto the temperature will not change. I can change the mode  in HomeKit and it changes on the device. So part of it works just not setting the temp.

Gotcha thank you. As far as I can tell, the auto mode should work just fine. To be clear, this is the mode in HomeKit where you can set both the high and low temp on the same screen. This is the mode I built the plugin specifically for since all three modes (heat, cool and auto) are implemented separately. Do me a favor and set the system to auto, wait until a new set of log messages come up with the thermostat status, then set the heat or cool temp. If you will post that log for me that would be fantastic. Pretty much all of my testing and debugging revolved around auto mode so let’s nail that down first, thanks!

homebridge.log (1).txt
Sure thing. Logs attached. Also I apologize. Auto mode does work. It changes on the device.

@carTloyal123
homebridge.log (2).txt
Additional logs. I set it back to cool after setting the auto temp.

Thank you for the extra logs, that will be helpful. So to confirm, your system on AUTO mode works totally correctly OR it only sets the system to auto but changing the temperature is still broken once in AUTO mode?

@xenonaxel awesome thanks for confirming that. I will check this out this week and maybe even today if I have time later. @jfarmer08 you can assign it to me if you like and I’ll follow up with updates

@carTloyal123 Any Update on this?

I have a fix I think. Haven’t been home this week to test it but I will today.

So, I have an update on my own fork of the repo and I will submit a PR to finalize it. As far as I can tell, the behavior should be more appropriate now for heat/cool single modes. I would definitely like for @xenonaxel to test it on his system so we can confirm everyone has the same experience. My device is currently not being used in my home  but I have been testing as best I can. I will link the PR here shortly

#119

@carTloyal123 Looks to be working! The only oddity I noticed is if I switch from cool to heat or vice versa the temperature doesn't update until I reopen the app but that's more user experience. It doesn't break functionality. Thank you so much for your work on this.

Great to hear it is behaving better now. If you want to demonstrate the issue of changing from heat to cool or vice versa and send a log and/or a screen capture of your iOS device that would be great. Now that I have my development environment set back up it is much easier to make updates.

Also, it looks like @jfarmer08 has not merged my changes yet so did you get a version of the plugin from my development PR? How did you get the new version to test? @xenonaxel

@xenonaxel what exactly do you mean the temp doesn't update until you restart the app? What are you expecting to happen? Could you give me an example here?

@carTloyal123 Yes, I took it from your development PR. I will test more thoroughly when @jfarmer08 updates the main repo.
I have screenshots of the behavior.

Reflects current state and temperature.

I close the Home App and reopen it. It shows the correct temperature.
From what I can tell this is just a UI bug. My guess is when I switch states it's not calling for the new temperature data right away until I relaunch the app.

@xenonaxel awesome thanks for the extra info. I can also recreate this on my test setup. I think I can fix this but you are right that the current Homekit implementation does not actually ask for the  corresponding temperature when changing modes. Not sure if  this is on  purpose from Apple or  if the expectation is that the accessory should handle this. Either way I am working on  a fix and will update if it looks good. Thanks for the extra info!

I pushed a small change that is a bit of a hack until I can find out what the correct behavior/data flow should be.

@jfarmer08 thanks  for the merge, would you close this issue please?

how would one go about applying your fix?

If you have the last est version of the plugin it should be applied already. Feel free to open a new issue if you are still seeing strange behavior


fix storage adapter jest setup

This pr contains the fix for the following error during the tests runtime:
/Users/me/project/node_modules/mixpanel-react-native/javascript/mixpanel-persistent.js:45
        yield this.storageAdapter.getItem((0, _mixpanelConstants.getDeviceIdKey)(token)).then(function (deviceId) {

        TypeError: Cannot read properties of undefined (reading 'then')

this pr contains parts of this pr, I'll reopen


AMD Linux running gui error

VC1006AMD_Intel python3.8 gui_v1.py
/home/user/Downloads/RVC/RVC1006AMD_Intel/my_env/lib/python3.8/site-packages/torch/cuda/init.py:546: UserWarning: Can't initialize NVML
warnings.warn("Can't initialize NVML")
2023-10-28 20:51:33.542783: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-10-28 20:51:35 | INFO | faiss.loader | Loading faiss with AVX2 support.
2023-10-28 20:51:35 | INFO | faiss.loader | Successfully loaded faiss with AVX2 support.
2023-10-28 20:51:36 | INFO | configs.config | Found GPU AMD Radeon RX 6700 XT
is_half:True, device:cuda:0
Traceback (most recent call last):
File "gui_v1.py", line 120, in load
data = json.load(j)
File "/usr/lib/python3.8/json/init.py", line 293, in load
return loads(fp.read(),
File "/usr/lib/python3.8/json/init.py", line 357, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.8/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "gui_v1.py", line 874, in
gui = GUI()
File "gui_v1.py", line 114, in init
self.launcher()
File "gui_v1.py", line 153, in launcher
data = self.load()
File "gui_v1.py", line 134, in load
"sg_input_device": input_devices[sd.default.device[0]],
IndexError: list index out of range

Ditto, but using cpu. Everything in my requirements, etc. are installed

https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/f431f8fb3f13aa6dfedf33383f70de35fe07dfbd/gui_v1.py#L125
sounddevice fail to get deafult device, so set the index to 0:
if data["sg_input_device"] not in input_devices:
    data["sg_input_device"] = input_devices[0]
if data["sg_output_device"] not in output_devices:
    data["sg_output_device"] = output_devices[0]

@ykk648 sorry are you recommending to replace this section of the code?

@deadp check your configs/config.json file , it's blank or not, it may be corrupted

It is blank, what should I do?

recover it https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/configs/config.json

This got it to launch, running into a new error now though. Thank you

To anyone still having problems with this, from
https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/ff093ad88f01428e822c04ad64518fda85699614/gui_v1.py#L125-L128
I tried doing this
                    if data["sg_input_device"] not in input_devices:
                        data["sg_input_device"] = input_devices[-1]
                    if data["sg_output_device"] not in output_devices:
                        data["sg_output_device"] = output_devices[-1]

which worked for me.

By printing testing sounddevice's query_devices() and input_devices, output_devices array, for my system (Linux Mint 21.2), I found out that the sounddevice's devices combined both the inputs and outputs together, while the self.get_device() on line 117 returned the correctly separated inputs and outputs. This caused me to get the index out of range error. For my system, in both input_device and output_device the default device sits on the last index, hence setting it to index [-1] worked for me.
To add, the config.json file being empty happens because, firstly, the first config.json reads and the list index error occurs, the try block goes to config write mode, and also meets the index error. The write fails, the config.json is corrupted.


Update UG to include remove duplicates, add course/specialisation

Ok, had to resolve a merge conflict, let me know if this is good to merge


need inline train protection devices. Also for Eurobalise and balise group

The eurobalise and balisegroup are in high demand.
I considered using the transmitter symbol but that doesn't fit the bill because it seems to be designed with a Gleismagnet in mind and is placed next to the track.
I suggest introducing a simple rectangle shape to represent a generic train protection spot device. This could cover other devices like french crocodile. The (euro-)balise is considered such a device.
A balise group could be represented by a grouping BG4711 of balises or BG4712 when the individual balises aren't represented

Note that Individual eurobalises have no orientation but the balisegroup does.
A balise group could be given the generic name "information point"; as it is known in France and Italy and other countries that have used balises for a long time. Thus, a eurobalise and balisegroup is just a special kind of information point.
Here are some supporting diagrams.
Finally, there's a need to represent a switchable balise. ProRail uses below symbols where the left one has got a little cable attached to indicate that it is a switched balise. You could do something similar.

The transmitter symbols definitely need improvement!
Would it help to put the rectangle of the transmitter in the middle of the track?

With the current balise symbol, however, I see a risk of confusion with routes and driving relationships. In general, a triangle with a line is more of an arrow and thus a direction than an object.
In your example, I also see the danger of confusing BG4712 with a ghost train.
I suggest that we first collect the information that needs to be represented by a balise symbol.

Is the larger shape of the single and double balise intentional? I don't find it problematic to keep the size of an individual balise constant.
For a size comparison with the other symbols and for later implementation, here is a suggestion:

With the switchable balises, I find the line problematic because of the size and recognisability.
However, I don't have a better suggestion. I tried a number of monochromatic options for a single balise:

what do you find particularly bad?

DB and others draw the single balise as a square though in reality it is a rectangle.
During design, people may pencil in a balise group without knowledge of the number of balises inside. That's why I opt for the rectangle symbol with the "heavy side" representing the origin.
wikipedia suggests fixed vs. transparent Eurobalise:

a balise may be either a 'Fixed Data Balise,' or 'Fixed Balise' for short, transmitting the same data to every train, or a 'Transparent Data Balise' which transmits variable data, also called a 'Switchable' or 'Controllable Balise'

from which I deduce that a window-like shape suits the transparent balise whereas a trellis would suit the fixed balise.
from left to right
transparent balise, fixed balise, balise group with origin on the left hand side, balise group consisting of a transparent and fixed balise.
Howzat ?

After a lengthy discussion with my colleagues, it is now important to me that the direction in which the balise acts is recognizable from the depiction.
Here is a new proposal with fixed and switchable balises as well as unquantified and with an exact number of balises:

I don't think that the individual balise has an application direction; it's the track-to-train messages inside the balise that have an application direction. There can be a mix of messages in a balise/BG and messages can be toggled on/off.
The balise group does have an orientation, the wording "orientation" instead of application direction expresses the notion that this orientation, captured by NID_PIG, lets the train establish its direction of movement. I.e. normal with respect to the BG-orientation when it passes NID_PIG=0,1,2... and reverse otherwise. So a train can decide that "the message in this BG has application direction reverse and I ignore it because I'm traversing the BG in normal direction".
The drawing on the top right-hand side of the diagram on this page sums it all up. This was inspired by the SNCF way of representing balises and packets in the balises. Note that the drawing represents the balise group as an oriented triangle for the reason mentioned before.
I question why a balise should be placed to the right/left of track; it's physically at the centre and has no application direction.
In conclusion, I would welcome symbols that are

centered on the track
are transparant/opaque to show that they're switched (transparent!) or fixed
visualise orientation of the balise group
I suggest using the triangle for a BG with unquantified number of balises
marking the Position-in-group when the balises in a BG are displayed (P0, P1 below but I'm not sure this is a good idea).

the triangle for unquantified numbers: As stated earlier: With a triangle, I see a risk of confusion with routes and driving relationships. In general, a triangle with a line is more of an arrow and thus a direction than an object. Also, the overall composition for easier perception becomes more complicated with other objects currently using the triangle (route, distant signal, speed signal). Furthermore, it is not wise to use two geometrically different symbols for essentially the same object.
To sum it up: let us stick with the rectangle/square for all balises.

application direction: The application direction needs to be addressed. I do not think, that doing it by a label is sufficient, due to the break in perceiving text versus perceiving symbols. Different options are needed since the triangle is problematic as well (see section 1.). The track schematic library has a built-in meaning of direction, which results from the left or right-hand driving of the railways. The left or right-hand driving can be seen in the signals and is also used for other symbols (clearing points, train berth). For example, in the case of right-hand driving, elements that are placed below the track are valid for the train travelling forward. And elements that are valid for a train travelling in the opposite direction are placed on top of the track. This also applies to the current transmitters and they are not designed with a Gleismagnet (track magnet) in mind which is placed next to the track. It just happens that the technology to get application direction to a Gleismagnet results also in placement left or right of a track. A track schematic must be abstract in order to represent the crucial information. Personally, I don't find it crucial that a balise, unlike a Gleismagnet, is placed in the middle of the track. abstractly, however, it is important that there is a sense of direction that can be easily recognised. On the abstract level of information transmission from infrastructure to vehicle, balises and Gleismagnet do not differ. Technically they are worlds apart, but not in terms of meaning. In the case of signals, the technical zoo of signal aspects is not shown because it would simply be too much. The fact that a single balise has no direction can be compensated by displaying it on both sides of the track.
But I do recognise the problem to reach a universal symbol with many different already out there. And I am unsure how to proceed on the application direction.

transparent/opaque vs. fixed: I understand that the distinction between transparent and opaque comes from electrical engineering, but I would be very reluctant to apply this figurative language directly to the symbols. It could also be argued that with a black track, a "transparent" balise would also have to be black. with the image that a fixed balise is simple and something is added with a switchable balise, you arrive at the opposite representation. In addition, a large part of the transport science community that uses such track schematics on a larger scale does not consist mainly of electrical engineers. Therefore, the use of the wording "fixed" for a black rectangle with a white background and "switched" with an additional black square seems better.

I want to thank you for providing very helpful input. Do you have any ideas on how we can get a result that makes sense? Maybe I need to add the option for local flavour sooner.

You probably ment this drawing:

Currently, I would picture it in the trackschematic this way:

We're reaching consensus. I think it is important to express two directions to cater for the different use cases

BG orientation expressed by M_PIG=0..n (as shown by the yellow triangle in the EULYNX drawing above)
application direction of track to train packets (as expressed by the arrow over P27, P3, P12...)

I suggest that the balise group's label express the BG orientation.  I prefer Label BG03 because it expresses the BG orientation more strongly than BG01. Just for the record, ETCS defines orientation of single-balise "groups" as well.

I would always arrange the labels in the same wayiIn order to treat the BG orientation and the direction of application equally - even if it is only a single balise.
It would look like this:


Standard functions I need

count(nodeset) — number of nodes
...

String functions: substr, substring

len = length of a string

Various math functions: floor, ceil, round


Ability to provide custom text in the publication confirmation modal

We will be using the authentication page to provide some terms and conditions, but librarians at our institution also want to be able to put our deposit agreement in the publication pop-up confirmation modal.
A simple config that is injected in the confirmation modal would do.

Closing so that it's tracked in #1204


Test: Ads API Overview added space to line 9

This is a test with my email changed to v-rgaritta on GitHub and in Git config.

Docs Build status updates of commit a00ed46:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-InsufficientPermissionOnRepo] User eric-urban does not have sufficient permission on https://github.com/MicrosoftDocs/Advertising-docs repository. Hint: required permission 'Read', actual permission 'None'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit a00ed46:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-InsufficientPermissionOnRepo] User eric-urban does not have sufficient permission on https://github.com/MicrosoftDocs/Advertising-docs repository. Hint: required permission 'Read', actual permission 'None'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit a00ed46:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-InsufficientPermissionOnRepo] User eric-urban does not have sufficient permission on https://github.com/MicrosoftDocs/Advertising-docs repository. Hint: required permission 'Read', actual permission 'None'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit a00ed46:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Advertising/bingads-13/guides/index.md
:bulb:Suggestion

Details

Advertising/bingads-13/guides/index.md

Line 55, Column 5: [Suggestion-docs-link-absolute] Absolute link 'https://docs.microsoft.com/answers/topics/advertising-api.html' will be broken in isolated environments. Replace with a relative link.
Line 57, Column 147: [Suggestion-docs-link-absolute] Absolute link 'https://docs.microsoft.com/answers/topics/advertising-api.html' will be broken in isolated environments. Replace with a relative link.

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Closing--was only for test purposes.


tests: dependencies not to resolve with tsconfig paths

closes #42

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Why custom solution

Why would you create custom monitoring tool ? There are many free / open-source / self-hostable tools like uptime-kuma

Hey @MarekVigas - just a quick update, as we've been moving forward with our monitoring internally over the past months, we've also ended up with replacing this healthchecker with Uptime kuma at some point. The status page can be found here - https://status.bratislava.sk/
Thanks for the suggestion 🙂


pull request for e2e test at 02/02/2017 12:26:14

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Fragment event start / stop timestamps

Is your feature request related to a problem? Please describe.
The fragment event log contains entries specifying how a particular fragment was processed. Each entry (EventLogEntry) defines:

transition
timestamp
node log

We should replace timestamp with start and stop fields.
See also https://github.com/Knotx/knotx-fragments-chrome-extension/pull/31/files#diff-878747cd44f203c21b1e54d7a9493dc1R20.

Done in https://github.com/Knotx/knotx-fragments/pull/104.


Add test to simulate control plane behavior for large numbers of clusters

Please see the doc changes and code comments for how this is accomplished. Note that the PR consists of a commit that refactors the sync controller to allow its behavior to be changed in support of the test, and another to implement the test.

@font Thank you for your review! I've attempted to address your comments.


idb should switch to Qt5

Qt 4.x is not current version, Qt 5.x is current and idb should aim to use Qt 5. Unfortunately the "qtbindings" gem only supports Qt 4.x currently and it seems that the only Qt5 bindings are those based on QML (ruby-qml: https://seanchas116.github.io/ruby-qml/). I don't know whether ruby-qml is sufficient for the needs of idb but in any case it would likely involve some significant work.

upstream: https://github.com/ryanmelt/qtbindings/issues/157
author abandoned the project and won't maintain it.


Agent Type: Retailer

In the /arbiter/crates/simulate/src/ directory, implement an Retailer trait for agents.

Retailer can be a struct that implements the Agent trait. We can have a retailer behave stochastically. I will look into some models to use here.

Looks like using a gamma process would be a good start to the temporal behavior of an agent like a retailer.

If you have a random number generator that can draw from a gamma distribution with appropriate rate and shape parameters, then you can use it to generate a sequence of waiting times between trades. Specifically, you would draw from the gamma distribution to determine the time between the current trade and the next trade. Then, you would wait for that amount of time before making the next trade.

I like the initial approach with the gamma process. I like the idea of using ML in the future for this but not sure how feasible it is vs how much it would improve the model.

This I'll take once we get our first simulations done.


Can't download config with custom hit/kill sounds in Firefox 52

Tested downloading the same config with Firefox 52 and Google Chrome 57. Downloading the script works fine in Chrome, but in Firefox this error is given on the page:
Error: Ajax error for ../make/snd/Q3.wav : 206 Partial Content
This is vanilla Firefox with all addons disabled.

Should be fixed now

Same error occurring in Firefox 53.0, no addons enabled.
Error: Ajax error for ../make/snd/funky.wav : 206 Partial Content
Works fine in Google Chrome.

Strange things are happening, it should be working, but it doesn't. I will take a look at this again.

This might have been something to do with how Firefox caches HTML5 audio: https://bugzilla.mozilla.org/show_bug.cgi?id=874867 .
I'm not sure, it works on my local server but it does not work on the production site.

I have this problem locally and can work around it by simply renaming the wav file extension to something else (I picked .wave), since the js renames it anyway. Not sure it works everywhere, but worth a try if you can't figure out a proper fix.

This issue seems to be fixed in the latest update (Jekyll migration).


"startsingularity" command does not actually start the singularity

Description
It turns all emitters on, but it fucks them up and makes them exist in an eternal state of having no power for some reason.
It also turns APEs on for some reason??
Tested in release mode but it probably doesn't work in debug either
Reproduction

Use release mode
Use the startsingularity command to start the singularity on Kettle
It doesn't work
Make a 5 morbillion core AME just to double-check that the emitters are in fact borked
It still doesn't work

likely just bitrotted

Tested on Core today. It starts the emitters, but does not turn on the containment field generators. Nothing observable happened to the PPA, it still had to be finished by hand