What is a sort injection?

What is a sort injection?
Given these syntax definitions,
syntax BC ::= "B" | "C"
syntax A ::= "A" | BC

the sort A in Kore contains the constructor A, and we have subsort axioms for injections of  inj{BC, A}(B) and inj{BC, A}(C).
Q1(a): Are these injections in the image of some constructor, or are they themselves constructor-like?
Q1(b): If the injections are in the image of some constructor, which constructor?
The Haskell backend currently treats them as constructor-like; for example,
\ceil(A ∧ inj{BC, A}(B)) = ⊥

On the other hand, the no-junk constructor axioms for sort A do not mention them; that is, we have
axiom A

instead of
axiom A ∨ (∃ x. inj{BC, A}(x))

The answer to Q1 has implications for how we treat overloaded symbols. Consider these definitions, adapted from #680:
syntax Number ::= Int | Float

syntax IType ::= "i32" | "i64"
syntax FType ::= "f32" | "f64"
syntax  Type ::= IType | FType

syntax IVal ::= overloaded(IType, Int) [klabel(overloaded)]
syntax FVal ::= overloaded(FType, Float) [klabel(overloaded)]

syntax Val ::= IVal | FVal
             | overloaded(Type, Number) [klabel(overloaded)]

Each overloaded symbol is regarded as a constructor in its own sort. Because all three overloaded symbols have the same klabel, the frontend generates overloading axioms such as
axiom overloaded_Val(inj{IType, Type}(T), inj{Int, Number}(X)) =
        inj{IVal, Val}(overloaded_IVal(T, X))

If inj{IVal, Val} is constructor-like, this axiom violates the no-confusion axiom for constructors in Val! The intent of such overloading is that the overloaded symbol in Val is merely an abstraction for the injection of the IVal and FVal symbols, but all three symbols are given constructor axioms. We could regard overloaded_Val as a (partial) function instead, but the other backends cannot handle functions on the left-hand side of rules.
Q2: What is overloaded_Val?

These injections are constructor-like. The set of all constructors of sort A contains the terminal A and the injection inj{BC, A}. This means that when stating the (No Junk) axioms, we need to take the injection into account. In addition, these injections are also injective functions.
In terms of (No Confusion), I can see why it is a more tricky issue. Because injections need to satisfy the triangle property: inj{A,C}(x) = inj{B,C}(inj{A,B}(x)), their (No Confusion) axioms are unevitably more complex than the normal constructors. (Note that the triangle property is already in conflict with the (No Confusion) axiom, if we regard inj{A,C} and inj{B,C} as two normal constructors of sort C.)
Note that we have a similar issue in domains that contain constructors satisfying some additional "theory axioms". One typical example is sort Map for finite maps, which has constructors emp for the empty map, _|->_ for singleton maps, and _*_ to merge two maps into a bigger map. And _*_ satisfies the variant of (No Confusion) that takes its associativity and commutativity, and the axiom x|->y * x|->z = emp into account, which is unevitably more complex than the normal constructor case.
Back to your question: It is in general tricky to generate (No Confusion) for injections. But it is easy to generate (No Confusion) for normal constructors, and, in the case of (No Confusion Different Constructor), for any pair of a normal constructor and an injection. I believe these axioms will be enough to drive the unification process, which, I guess, would be the main use of (No Confusion) in backends. For (No Confusion Different Constructor) for a pair of two injections, this boils down to properly dealing with subsorting in general and, in particular, the triangle property.
To sum up, my suggestion for this issue would be to forget about generating a complete set of (No Confusion) axioms, but only those that are needed, (for unification, e.g.). It is easy to define axioms that specify positive statements (e.g., when two things are equal) and hard to specify negative statements (e.g., when two things are unequal as in (No Confusion)).

But it is easy to generate (No Confusion) for normal constructors, and, in the case of (No Confusion Different Constructor), for any pair of a normal constructor and an injection.

This is only easy if there is no overloading! If one of the constructors in the higher sort overloads a constructor in a lower sort, what should be the "no confusion" axiom? Or even worse: what should be the "no confusion" axiom if a constructor in a higher sort overloads one of many constructors in a lower sort?

Yes. You are right on that. It's only easy, I guess, if there's no overloading; and if there is, then it is only easy if both constructors are normal constructors.

Thanks for starting this discussion, @ttuegel .  Yes, it is tricky.  In K, we are talking about constructors modulo axioms like assoc, comm, and inj-triangles.  Constructors modulo assoc and comm are pretty understood from previous languages like OBJ and Maude, but other axioms, like injection triangles, are less well understood.  And later on we should also consider context and their axioms.  I think we need to write a research paper about it, in fact.
I agree with all the points that @xc93 made above.  Also, more importantly, that we should probably not get stuck with having a perfect axiomatization that allows us to proof-check everything we do algorithmically with the current version of ML that K implements.  I know I should be the last person on the planet to say that, but here is my rationale: I am convinced that we will switch to AppML eventually, where things are so much cleaner and simpler.  Then all this business with injections and parametric symbols will dissolve and either we'll not have at all these problems or we'd have to translate them into something else.
Let me re-iterate it publicly here that I am pretty opposed to order-sorted algebra (OSA) as a "foundation of things" these days.  I started my PhD on OSA with Goguen, the inventor of OSA (Meseguer came into the game a bit later).  I showed that OSA can be organized as an institution, which was pretty technical.  Then I also proved the orthogonality-implies-local-confluence theorem for OSA at Goguen's request, which was one of the most complex things I've ever proved.  Then I used OSA in several of my papers and for 20 years with Maude.  My conclusion after all this years is that the complexity that OSA adds is not worth to build foundations on it.  OSA is great for algorithmic advances, like we are also doing here, but in terms of foundations, to explain things and develop theories, AppML is in my view the right answer after all these years of search.  All the above can be pretty easily explained with AppML.  @xc93 , can you please do it?
So my suggestion is the following: feel free to do whatever you need to algorithmically, provided that you can explain it in terms of AppML.  For now, explaining it informally and weaving hands if fine; later on  (in 1 year or so), we will generate AppML proof objects and then we will need to make everything rigorous.

we should probably not get stuck with having a perfect axiomatization

I agree, but I can't even say using informal language what these things (sort injections and overloads) should mean. Sort injections without overloading are clear now, thanks to @xc93's comments. And while we don't need a complete axiomatization, we should at least be sure that the frontend does not emit wrong axioms. It's fine if we have to use built-in reasoning where the axioms are not sufficient, but we do use some axioms internally (and also send some to Z3).

As said in @grosu's comments, a lot of these issues with subsort overloading and proper axiomatization will go away in AppML. Let me give an example here. Firstly, the biggest game changer in AppML is that we drop all sorts and, instead, we deal with sorts by using constant symbols that represent their names (such as Int, Float, Number, Type,...) and a special symbol [[_]], called inhabitant symbol, which, when applied to a sort name (e.g., Int), the pattern (e.g., [[Int]]) represents the inhabitant set of that sort. Subsorting relation is then easily captured by the following axioms:
[[Number]] = [[Int]] \/ [[Float]]
[[Type]] = [[IType]] \/ [[FType]]
[[Val]] = [[IVal]] \/ [[FVal]]

The function overloaded, which is (subsort) overloaded, can be easily captured in AppML by defining just one function, say overloaded, with the following (Arity) axioms that specify its behavior over different sort universes (Note that I write function application f(x,y) as f x y because that's more preferable in AppML; it's just a matter of notation):
overloaded [[Int]] [[IType]] ⊆ [[IVal]]
overloaded [[Float]] [[FType]] ⊆ [[FVal]]
overloaded [[Number]] [[Type]] ⊆ [[Val]]

No injections are needed at any place. It's just sort names, their inhabitant, and one function overloaded, with the natural axioms specifying the subsort relation and the arity function. Other axioms such as (No Junk) and (No Confusion) are also straignforward to define. As an example:
(No Junk)  [[IVal]] = overloaded [[Int]] [[IType]]   // that is, we strengthen "⊆" to "=" in the (Arity) axiom
(No Confusion) overloaded x t = overloaded x' t' -> x=x' /\ t=t'
(No Confusion) [[IVal]] ∩ [[FVal]] = ∅

@xc93 We (myself with @virgil-serbanuta) have another question, regarding sort injections where there is a diamond relation between sorts, i.e.
Sub ⊂ A
Sub ⊂ B
A ⊂ Super
B ⊂ Super

The term inj{Sub, Super}(φ) is abiguous: it could refer to inj{A, Super}(inj{Sub, A}(φ)) or inj{B, Super}(inj{Sub, B}(φ)). What is the resolution of this ambiguity? The two patterns cannot be the same if there is a no-confusion-like axiom for injections.

Based on the response, I think there is nothing more to do here right now.


Make SwipeCard reusable?

Feels wasteful to have to recreate the views every time in cardForIndexAt. It would be super awesome to see card view reuse if possible!!
Loving everything else!

Thanks for the suggestion @disczteam. Are you seeing any performance issues? This would be a nice feature, however I do not really see the need for it.
For UITableView, we need cell reuse to maintain 60fps while scrolling. In the case of this library, we only ever have 2 cards on screen, so it seems like a wasted effort since we are at 60 fps most times anyways. The one potential spot for improvement is right after a card is swiped; there is currently a small delay at this point and card reuse could possibly reduce the delay


added documentation for the dust models d7 and d8

@brandonshensley can you please double-check the description of the HD2017 models?

@brandonshensley can you please double-check the description of the HD2017 models?

Could you point me to where the relevant d7 and d8 model parameters are initialized? E.g., where if f_fe being set for d7? Thanks!

See presets.cfg, it is also linked inside the file in this pull request

Yes, the descriptions are consistent with the parameter values in presets.cfg. Thanks!

thanks!
Travis build fails just for astropy-dev, merging


minor: saving needs "Save as Type" file extension support

Almost all the text & graphics editors I use have a "Save as Type" droplist below "File Name:" prompt when I save files.  Brackets doesn't have this, which prohibits the standardized technique of not having to type in the file extension.
For years in Notepad++ I only when I do "Save As..." a new edit of an existing HTML file, I only type in "mynewwebpage" since the ".htm" extension is always there.  Now using brackets, since I don't remember to manually type in file extension every time, I end up with plain text file with no code formatting.

Agree with Tom. Every other editor has a drop down menu to select file extension when "save as" is used. I end up with plain text files by accident because nobody types extensions in anymore.


Optimizer Fails to Find Best Values

Version: Dev (9/13/24).
I'm looking for some advice on what seems odd to me in terms of the "optimal" channel budget being returned. My data has only 4 channels. The fitted model gives the following median values for the beta coefficients

and it appears that for the "csi" channel, which has a substantially larger effect than the others, is far from completely saturated:

However, if a scenario is ran  - I'm using the optimizer to make sure outputs are comparable by fixing the budget constraints- to the actual spends from the last 8 weeks of the training data:
n_new = 8

# Get the last 8 weeks of training data spend amounts
ctv_last_8 = round(X["ctv_cost"].iloc[-n_new:].values.sum(),0)
xdevcombo_last_8 = round(X["xdevcombo_cost"].iloc[-n_new:].values.sum(),0)
dynmob_last_8 = round(X["dynmob_cost"].iloc[-n_new:].values.sum(),0)
csi_last_8 = round(X["csi_cost"].iloc[-n_new:].values.sum(),0)

# total of these spend amounts
total_budget = ctv_last_8 + xdevcombo_last_8 + dynmob_last_8 + csi_last_8

def find_optimal_channel_spend(model, min_prop, max_prop):

    # budget bounds are some increase or decrease from the actuals in the training data
    budget_bounds= {'ctv_cost' : [ctv_last_8 * min_prop, ctv_last_8 * max_prop],
                'xdevcombo_cost' : [xdevcombo_last_8 * min_prop, xdevcombo_last_8 * max_prop],
                'dynmob_cost' : [dynmob_last_8 * min_prop, dynmob_last_8 * max_prop],
                'csi_cost' : [csi_last_8 * min_prop, csi_last_8 * max_prop]}

    response = model.allocate_budget_to_maximize_response(
        budget=total_budget,
        num_periods=8,
        time_granularity="weekly",
        budget_bounds=budget_bounds,
        noise_level = 0.0
    )

    return(response['y'].mean(axis=1).sum(),
           model.optimal_allocation_dict)

we get an estimated outcome of the following with requiring exact values matching the last 8 weeks:
find_optimal_channel_spend(mmm, min_prop=1, max_prop = 1)

Now, if we allow for wider ranges, where the assumption would be that more "CSI" would be included and revenue expected to be increased. This is not the case though...
find_optimal_channel_spend(mmm, min_prop=0.5, max_prop = 1.5)
we get a suboptimal outcome:

The optimizer decreased the top performing channel and decreased expected revenue.
I see this playing around with various ranges of min_prop and max_prop and see the same inability to select better choices of media spend.

Looking into the source code, it seems that part of this issue is related to the following:
From the objective function:
spend = np.full(self.num_periods, budget)
spend_extended = np.concatenate([spend, np.zeros(self.adstock.l_max)])

The channel budget amount is being copied over to each period. It seems that if instead, the amount was divided by num_periods first, a better solution could be found. The way this is set up currently, I would think it much more likely to hit a saturation point on the saturation curve erroneously. In my case, where the period of consideration is 8 weeks long, putting the sum of a channels spend or impressions (the budget_bounds) on the curve as above, would be a significant extrapolation from the amounts per period the model was built considering.


⚠ Bofrost.es has degraded performance

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

HTTP code: 200
Response time: 1366 ms

Resolved: Bofrost.es performance has improved in b9cf897 after 13 minutes.


Performance: Repeated FindOne is faster than Find with Where

Just wanted to share this, as I went through a lot of optimization to get to this point.
I have a LiteDb file with price information of a webshop which acts as a cache for a VERY slow webservice. I'm used to using Lucene for these kind of problems, but I wanted to try something new.
Consider the following call:
        public IEnumerable<GetPriceResponse> Get(int debtorNumber, List<string> productSkus)
        {
            var keys = productSkus.Select(x => debtorNumber + "_" + x).ToList();

            var result = _liteCollection.Find(
                /*Query.And(
                    Query.EQ("DebtorNumber", debtorNumber),
                    Query.Where("ProductSku", value => productSkus.Contains(value.AsString))
                )*/
                Query.Where("Key", value => keys.Contains(value.AsString))
            );

            return result.Select(x => x.ServiceResponse);
        }

The commented out was initially a LINQ statement. On a set of 500 SKU's, the LINQ query took almost 300ms, not "slow", but also not really fast.
I then experimented using Query, and the commented part then ended up taking about 200ms for 500 SKUs.
Then I figured I could just as well combine the two into one string. Using the single Where-query, this got it down to 100ms.
Obviously MUCH faster than what I originally had, however, still not fast enough. I noticed that doing a single FindOne for the same situation (using a Query.EQ) took less than 0.1ms... Doing to math, 0.1 * 500 = 50ms, so even faster!
I ended up doing this:
            var response = new List<GetPriceResponse>();
            productSkus.ForEach(x => response.Add(ServiceLocator.PriceCache.Get(debtorNumber, x)));

This takes about 25ms for 500 SKUs every time!
Is there anything I might have missed to speed this particular situation up even further? More than willing to try different things to push it to the limits! My ultimate target would be to get it down to the performance of a MemoryCache using the same combined key (have no precise number on that yet, but should be around 10ms).
I like LiteDB for the fact I can persist it, and reload it, but if that's all it gives me and in this particular case a MemoryCache is faster, then I can't keep this running in a production environment :S I reckon the whole LiteDb is in-memory all the time, so the more entries, the more memory it uses?

Hi @LennardF1989, thanks for share this. When we talk about query performance, the most important think is: has a good index to be used! Good indexes are based in how distinct keys they have. If this combination of debtorNumber + productSkus are unique: perfect. Create an index on this and use Query.In, like this:
public IEnumerable<GetPriceResponse> Get(int debtorNumber, List<string> productSkus)
{
    var keys = productSkus.Select(x => debtorNumber + "_" + x)
        .Select(x => new BsonValue(x))
        .ToList();

    // prefer use this "EnsureIndex" in you database open (to avoid checking this index in all query)
    // if you do not have this "Key" field in your class, you can create an expression:
    // I'm create as unique (set false if not possible)
    _liteCollection.EnsureIndex("Key", "$.DebtorNumber + '_' + $.ProductSku", true);

    // now, use Query.In
    var result = _liteCollection.Find(Query.In("Key", keys));

    return result.Select(x => x.ServiceResponse);
}

In v4, this should be fastest way to get this data. Check this and let me know how was the result.

@mbdavid Thanks! I did not notice the Query.In and turning the keys into a BsonValue beforehand is not something that crossed my mind. I'll try this out and see how it performs :) Hoping it outperforms the ForEach FindOne, because that just seems counter intuitive :P

I got it down to about 8ms in this way, so great succes. I'm still going to see how it measures against a Lucene index and a MemoryCache.

Hi! With the objective of organizing our issues, we are closing old unsolved issues. Please check the latest version of LiteDB and open a new issue if your problem/question/suggestion still applies. Thanks!


[$500] Web - "Bank account" option does not appear in "Wallet"

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.4.-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
Issue found when executing PR https://github.com/Expensify/App/issues/32079
Action Performed:

Go to settings > wallet
Add bank account

Expected Result:
Bank account option appears
Actual Result:
Only debit card option appears
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos
Add any screenshot/video evidence

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01ea0db427c9d793c6
Upwork Job ID:<PHONE_NUMBER>848581632
Last Price Increase: 2023-11-28

Is there a reason why this error doesn't occur in dev, but does occur in staging?

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~0132b61da48807943c

I cannot find this bug on dev

I cannot find this bug on dev

Please re-state the problem that we are trying to solve in this issue.
Please re-state the problem that we are trying to solve in this issue.
What is the root cause of that problem?
According to below condition, Bussiness Bank Account option is showing only when iouReport is not empty and return true. but if iouReport is empty it will always return false, So only debit option is showing in wallet.
const canUseBusinessBankAccount =
        ReportUtils.isExpenseReport(iouReport) ||
        (ReportUtils.isIOUReport(iouReport) && !ReportActionsUtils.hasRequestFromCurrentAccount(lodashGet(iouReport, 'reportID', 0), lodashGet(session, 'accountID', 0)));

What changes do you think we should make in order to solve the problem?
You need to check iouReport is empty or not in below mention file with updated code values.
https://github.com/Expensify/App/blob/main/src/components/AddPaymentMethodMenu.js#L69
const canUseBusinessBankAccount =
        _.isEmpty(iouReport) ||
        ReportUtils.isExpenseReport(iouReport) ||
        (ReportUtils.isIOUReport(iouReport) && !ReportActionsUtils.hasRequestFromCurrentAccount(lodashGet(iouReport, 'reportID', 0), lodashGet(session, 'accountID', 0)));

Video
https://github.com/Expensify/App/assets/43398804/4ac8c5bd-fcb2-4557-be8e-f296443ab97e

Asked about the expected behavior in wave 5: https://expensify.slack.com/archives/C05DWUDHVK7/p1702309201106189

Clarified the expected behavior and Bank Account should be an option in the list

@aimane-chnaif could you take a look at the proposals when you get a chance?

It should be a personal bank account

@Gonals @aimane-chnaif
Adding a new props to the wallet page is not working on my end.
Could you kindly re-evaluate my proposal? I solved the issue without adding props. It will show Business bank account option.

Making this external again, as we have proposals already. Taking a look at them

I think I'm with @tienifr on this one. He proposed a valid fix, pending verification on whether it should be personal or business, but effectively the same, so I think we should go with their proposal, as it was there earlier.

@muttmuure Seems like we had some errors assigning the jobs ⬆

@aimane-chnaif - $500
@tienifr - $500

Created a payment issue

So sorry @tienifr! I must have not completed the full payment steps or hit an error. I have sent you a new offer

Sorry, not sure what happened there. Anyway, everyone has been paid.


Sticky Column

Looking for a way to make the first column sticky. CSS doesn't seem to be able to cut it. I thought about perhaps using a custom gutter component for it, but I imagine I would run into some other unforeseen problems.
Any tips or advice on where to look to make this change? If I can figure it out i'd be happy to contribute it back.

I search issues, but forgot to search discussions 😅
Looks like a duplicate of this: https://github.com/nick-keller/react-datasheet-grid/discussions/104


Add script to sync labels

Add script to sync labels

No changes needing a change description found.

You can try these changes at https://cadlplayground.z22.web.core.windows.net/prs/3323/
Check the website changes at https://tspwebsitepr.z22.web.core.windows.net/prs/3323/


Are any of the helper files actually being used

https://github.com/muchdogesec/txt2stix/tree/main/includes/helpers
They're referenced in the description some extractions,
https://github.com/muchdogesec/txt2stix/blob/main/includes/extractions/pattern/config.yaml#L211
but don't appear to be called in the code. If not used, are we implementing the logic they are meant to serve?

stix_relationship_types.txt is used in ai_relationship_mode

@fqrious but no others?

no


operator [CI] project-quay

Updates Quay to add quay-devel as an approver

/merge possible

/merge possible

/merge possible


refresh intervals

Currently, there is only one urlfile (per cachefile?). That means that all feeds in there have to be refreshed at the same time - and in the same interval.
I would love to be able to configure different intervals for feeds, some hourly, some daily, some weekly.
Could this be done via multiple url-files with the same cache-file?
And/or some form of daemon process?
Ideally, I would love to go through a list of feeds and refresh them in random intervals. This would stop leaking the entire urlfile to an attacker on the line. (Thanks to Snowden, we can be certain the NSA is using that data for building user profiles.)
For a GnuPG keyring, this is done via tools like parcimonie and rewrites like parcimonie.sh and GPG maintenance.

I think the word "attacker" doesn't stand here.
Also, if someone's list of feeds can raise enough suspicion to cause problems,
refreshing in random intervals wouldn't do.
Solving this is too complex at out of the newsbeuter scope.
You can open another issue on customising the reload-time per article.
Surprisingly, it has no duplicate.

I think, in 2015, the word "attacker" stands everywhere on the internet. Remember, the Five Eyes even target Angry Birds Apps.
And yes, refreshing at random intervals over Tor does work a long way against that. This is exactly what the references parcimonie does:

parcimonie incrementaly refreshes a GnuPG keyring in a way that:

makes it hard to correlate her keyring content to an individual;
makes it hard to locate an individual based on an identifying subset of her keyring content.

parcimonie is a daemon that fetches one key at a time using the Tor network, waits a bit, changes the Tor circuit being used, and starts over.

I don't have a concrete proposal or patch, since I don't know the newsbeuter internals well enough, But I think the idea of "different intervals for feeds, some hourly, some daily, some weekly" could be a start, no?

In my opinion implementing a new dependency to Tor is out of the scope of newsbeuter. This is a "simple" great feed reader and no security application.
Refreshing at random intervals makes only sense for most people with a deamon process. If you just use newsbeuter to look if there are new feeds you have to refresh all. Then random refreshing whould only make sense before starting the graphical frontend.
The third enhancement would make sense for me: Implementing a way thant feeds could refreshed at different intervals. I could work on that issue if one of the core developers could give me the okay that it could be implemented.
Two general suggestions:
Use special configuration files for different refreshing interfals

Add a new command to the configuration file which could add another configuration file: add-config-file (parameters: <path> [<reload-time>]). If reload time is empty global reload time whould be used.
Add a special "tag" two the urlfile: <url> [<tag> ...] [reload-time:<minutes>] [<tag> ...]

In my opinion the second suggetion fitts more although an option for multiple urlfiles whould be anoter cool enhancement.

Yes, newsbeuter should not depend on Tor, that was not my proposal. The "proxy" option and/or torsocks are enough for that part.
I like the idea of a daemon process for fetching feeds regularly and in the background. There are all kinds of further things that could be done if fetching and display are different things handled by different components. See also https://github.com/akrennmair/newsbeuter/issues/175
I also like your suggestion to refresh at different intervals. But AFAICT that would only work from inside an already running newsbeuter instance. I would love a generic way that would work without having to run the "frontend" itself, since I refresh my feeds via cron.

parcimonie uses random intervals to hide the list of keys you have from the server you're requesting keys from. parcimonie.sh also triggers Tor chain re-creation before fetching a key, so every request probably goes through separate chain.
In context of Newsbeuter, it's questionable if you need to hide anything from the server: I'd bet a large sum of money on median number of feeds people request per server being 1. Random intervals might help people who request numerous feeds from the same server (don't want BBC to know you're interested both in US and China, eh? :) That's the only valid point I see on that front.
If one is worried about MITM attack on the wire between router/Wi-Fi hotspot and ISP, and:

aren't using Tor, and:

are in a crowded place (e.g. public Wi-Fi), random update intervals might help, although that's questionable: if they're the only person requesting RSS feeds, they're screwed; if they're using HTTP, then Newsbeuter is identifiable through User-Agent header and they're screwed; possibly many more scenarios in the same vain;
they're the only person on the wire, they're screwed regardless of update intervals;

are using Tor, random updates might marginally decrease chances of their requests being tracked down, because there's no spike in requests, but running relay (with or without exit node) is higher up the list of things to enhance untrackability.

If there's a MITM of one and their router, and they're not using Tor, they're screwed. For MITM, using third-party server to fetch one's feeds is actually a good idea.
Overall, I think adding a random_wait setting a la wget should be sufficient. It would affect only auto-update; r, R and -x reload will force-update all feeds right away. Maybe adding -x continuous-reload that will be just like running Newsbeuter but without TUI (that would be blocked by #175).
Per-feed update intervals or multiple urls files are overkills.

Overall, I think adding a random_wait setting a la wget should be sufficient. It would affect only auto-update; r, R and -x reload will force-update all feeds right away. Maybe adding -x continuous-reload that will be just like running Newsbeuter but without TUI (that would be blocked by #175).

I like both of these ideas!

It just occurred to me that there are still more ways to identify you: ETag and Last-Modified headers. Just sayin'.

 But my desire is not to be "bullet proof" against the NSA, because there is no such thing. But every single step to make things harder for them will work against other, not-so-skilled attackers on the way. Every bit counts.

Reading the first entry here, it seems the title would better have been:
"One Cache-db per Feed".
I thought to add that as feature-wish here very often.
This maybe can be doe externally with calling newsbeuter with -c and -u options.
Nevertheless seperate cache-files per FEED would make sense.
Easier export - just give away the cache-db for a certain feed,
if you want to share the feed-contents with others...

Reading the first entry here, it seems the title would better have been:
"One Cache-db per Feed".

Please read all the comments before replying. Per-feed caches were suggested as a possibility, but the topic is really different refresh intervals for different feeds.

Easier export - just give away the cache-db for a certain feed, if you want to share the feed-contents with others...

IMHO it's not worth the trouble, but if you believe it is, please open a separate issue and we'll discuss it there.


Reputation Tracker

[ ] Design Interface (Mock ups)
[ ] BA for level of generic availability (meeting)

allow user to create factions?
allow user to set feuds and alliances
allow user to set pro/con acts and values
allow user to define array of acts

Please add your planning poker estimate with ZenHub @sam-warren


BigQuery connector Import API revision

This is to review the parameters of the BQ connector through the import API.
We should take into account we expect to support BQ Storage API in the future: #15168
Current parameters (as of #15179 #15184):

provider Must be set to bigquery
project Define the Google Cloud project to connect to
table Table to be imported (if sql_query present, name of the imported CARTO dataset)
dataset Name of the BigQuery dataset containing the data. This is optional if sql_query is used.
sql_query Allows you to import a dataset defined by a SQL query. This is optional.

Import table example: will import xxxx-bq-project.yyyy-bq-dataset.zzzz-bq-tableas zzzz-bq-table:
{
  "provider": "bigquery",
  "project": "xxxx-bq-project",
  "dataset": "yyyy-bq-dataset",
  "table": "zzzz-bq-table"
}

Import query example: will import xxxx-bq-project.yyyy-bq-dataset.zzzz-bq-tableas zzzz:
{
  "provider": "bigquery",
  "project": "xxxx-bq-project",
  "sql_query": "SELECT * FROM yyyy-bq-dataset.zzzz-bq-table",
  "table": "zzzz"
}

The main problem with this is that it can be confusing because table is the name of the external table in the first case (and also the local name) and it is the local named given to the imported data in the second case.
Alternatives
1. Leave it as is
We could leave it like that for consistency with other db-connectors and clarify the use of table in the documentation.
2. Add another parameter
We could add another parameter for the name of the local table, e.g. save_as (or import_as, local_table.
The second example would now be:
{
  "provider": "bigquery",
  "project": "xxxx-bq-project",
  "sql_query": "SELECT * FROM yyyy-bq-dataset.zzzz-bq-table",
  "save_as": "zzzz"
}

The new parameter could be also added to the first example to save the table as a different name from the original:
{
  "provider": "bigquery",
  "project": "xxxx-bq-project",
  "dataset": "yyyy-bq-dataset",
  "table": "zzzz-bq-table",
  "save_as": "zzzz"
}

2b. Add another parameter and rename table
For greater clarity we could also rename table to source_table/from_table in addition of the new local_table/save_as parameter.
3. Use subparameters
We could use mutually exclusive parameters (objects) for the two cases (table/query) with different subparameters in each case.
The name of the parameters could be sync_query/sync_table, bq_query/bq_table, from_query/from_table, ...
(sync_ could be confusing because we call sync tables to the imports that contain an interval parameter so they are updated periodically)
The examples would now be:
{
  "provider": "bigquery",
  "project": "xxxx-bq-project",
  "from_table": {
    "dataset": "yyyy-bq-dataset",
    "source_table": "zzzz-bq-table"  // source
  },
  "table": "zzzz"  // destination
}

{
  "provider": "bigquery",
  "project": "xxxx-bq-project",
  "from_query": {
      "sql_query": "SELECT * FROM yyyy-bq-dataset.zzzz-bq-table" // source
  },
  "table": "zzzz" // destination
}

cc @ilbambino  @alonsogarciapablo

Really good summary of the Slack discussion. 👍
As we use the same API in other connectors and we cannot change those I would try to improve it with the minimal changes. Hence I would go for solution 2. Adding a new parameter, either save_as or local_table. I think with that and updating the docs will improve it quite a lot.
My 2 cents

I also like solution 2 since it's simple and not too different from other connectors.
Any preferences on the parameter name?

[ ] save_as
[ ] import_as
[ ] rename_as
[ ] local_table
[ ] carto_table
[ ] carto_dataset
[ ] ...

This is not specific to the BigQuery connector... the rest of connectors have the same issue (table means different things in different contexts). IMO, if we go with 2. we should also add that same parameter (as an alias) to the rest of connectors for consistency, keeping backwards compatibility.
What if we first try to make things clearer by changing the documentation? For example, right now there's a section that documents all parameters:

And then there're two sections: "Connect to a Table", "Connect to a SQL Query".
Perhaps we can remove that shared section and document the specific parameters for each of those options within their sections... what do you think?

+1 to @alonsogarciapablo comment. There are clients already using sql_query + table as destination table.

One of the Principles of Designing APIs is they have to be simple & intuitive even they aren't documented therefore I would go with 2. But, as @alonsogarciapablo pointed, we must keep backwards compatibility so I think we should keep them and update the documentation adding a deprecated tag to table parameter.
So IMO we should:

Keep table parameter.
Add new import_as parameter (already done in https://github.com/CartoDB/cartodb/pull/15232 by @jgoizueta)
Update the doc marking table parameter as deprecated.

What do you think? @alonsogarciapablo @alrocar @ilbambino

I've recently had several conversations with @agnesgyorfi about backwards compatibility, so I'm adding her to the conversation.
In this case I don't think the problem is deprecating the table parameter, but, in case we did it, to clearly have and communicate a deprecation plan in one of our public APIs.
If we just mark in the doc the parameter as deprecated, most likely we'll end up supporting both table and import_as and if we eventually drop table we might have complaints of actual users if we haven't communicate it properly.
Even when this is a minor change it might disturb current users operations or break SLAs.
For now, my opinion is that I'm fine with the plan proposed by @manmorjim but at some point if we want to drop the table parameter we'd need some metrics of its usage and some plan to communicate this change in the API according to our SLAs.

@alrocar oh yes, thank you for flagging me here. In the agreement I just sent back today, the customer wanted to have a right to terminate the agreement immediately if we implemented changes that were not backwards-compatible. My suggested edit (tbd if it's acceptable to them) is that they could only terminate for a non-backwards compatible change if it caused "material detriment".
It would be helpful for me to have a very dumbed-down explanation of what the functionality limitations of the non-backwards-compatible change would be, in this case, esp. to have a "case study" example in my back pocket the next time someone wants to change this clause in our agreement.  Thanks!
CC @palrj

I agree with @alrocar we should communicate a deprecation plan. Do we have a defined deprecation plan for our public APIs?
AFAIK the current version of CARTO's import API is v1 (e.g. /api/v1/imports) so we can keep table parameter to make v1 backwards compatible and marking this parameter as deprecated in doc. This means this parameter will never be dropped in this API version but will not be supported in next versions (e.g. if we publish a v2: /api/v2/imports this parameter won't work).
@agnesgyorfi I'll try to do my best to explain the functionality limitations users would get with non-backwards-compatible changes. In this case, table parameter is used by customers to name the CARTO table, e.g. they have a program which imports a table called my_remote_table in their dashboard with the name my_carto_table it would be using our import API v1 with:
/api/v1/imports
{
    "connector": {
        "provider": "bigquery",
        "project": "my_project",
        "sql_query": "select * from `my_project.my_dataset.my_remote_table`;",
        "table": "my_carto_table"
    }
}

So if we replace the table parameter with import_as to make our API simpler the call above would be:
/api/v1/imports
{
    "connector": {
        "provider": "bigquery",
        "project": "my_project",
        "sql_query": "select * from `my_project.my_dataset.my_remote_table`;",
        "import_as": "my_carto_table"
    }
}

So in this case, the program users were using won't work unless they change their program to replace the table parameter with import_as.
To prevent that, we should mark the table parameter as deprecated in the doc to communicate future customers to avoid using this parameter in their programs and to communicate current customers this parameter is supported but it won't in next API versions so it would be nice changing it.
Depending on our deprecation plan (which it should be public & documented for customers) we could provide a long sunset period to drop v1 API and supports only v2 and so.
more info about best practies deprecating APIs

I keep thinking this ->  https://github.com/CartoDB/cartodb/issues/15213#issuecomment-553490251. Adding the new parameter is easy, but deprecating the old one is not, and we can skip all that work if we document things in a more clear way.

We discussed about this offline and @manmorjim will go with option 2. (new alias for table and marking table as depecrated` if it's not super hard.


Add doctype tag

Fixes https://github.com/mrin9/RapiDoc/issues/2 and https://github.com/mrin9/RapiDoc/issues/3

Thanks for taking care of this one


Image skus' differentiation documentation

The below lists the skus for the Windows-10 offer.
Get-AzVMImageSku -Location northcentralus -PublisherName MicrosoftWindowsDesktop -Offer Windows-10
What does h stand for in 19h2-ent-g2 and what does rs stand for in rs5-enterprise-g2?
And how do I locate a Gen2 image for the office-365 offer?

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

ID: 82cde811-05df-c34c-6268-90e7c71e9c53
Version Independent ID: b7b97f26-733f-95d2-d62c-8fe6c68e0560
Content: Use Windows client images in Azure - Azure Windows Virtual Machines
Content Source: articles/virtual-machines/windows/client-images.md
Service: virtual-machines-windows
GitHub Login: @cynthn
Microsoft Alias: cynthn

@Ayanmullick Thank you for your feedback! We will review and provide an update as appropriate.

@Ayanmullick -
19h2 ("19H2") and rs5 (RS5) corresponds to specific releases of the Windows OS. See this Wikipedia page:
https://en.wikipedia.org/wiki/Template:Windows_10_versions
"RS5" is basically "Redstone 5" in the above list

@cynthn Can you add your comments.

Thanks for clarifying @sujayvsarma . Could you also share the meaning of zh and cn in 19h2-pro-zh-cn and the of evd in 19h2-evd? Why aren't the 20H1 images showing up? And how do I locate Gen2 images for the office-365 offer?

A google will tell you what those acronyms mean.
Not all versions of all software show up in the marketplace.

@sujayvsarma , I feel Microsoft should document how to access a current generation [Gen2] image for Microsoft's office-365 offer.

@Ayanmullick - Nope. Because these are marketplace images, Microsoft does NOT need to document anything than provide the means to query and access ALL items that are in the marketplace. In fact, if it does do what you are asking, it would open itself to anti-competition & unfair trade practices lawsuits from around the globe.

#assign @VikasPullagura-MSFT I'm not sure why this was assigned to docs. Can you assign someone from Marketplace or close the issue if there is no further action?

@VikasPullagura-MSFT , This is a gap in documentation. Please assign to the appropriate person responsible for marketplace documentation.

@BrianLevenson  Can you please look into this customer request and provide your insights and also update document if necessary?

@BrianLevenson , I tried to ping you on Teams.

Hi @ayanmullick, this is not something I can address. Sorry!

I am taking a look into this one.

For Gen 2 images, you can use the information in this document to determine which images support gen 2
https://docs.microsoft.com/en-us/azure/virtual-machines/windows/generation-2
As per all the different versions of windows that have r2, evd, I am not sure what those mean exactly. I would follow the windows 10 release pages here: https://docs.microsoft.com/en-us/windows/release-information/
This is nothing specific to Azure per say just how the windows team names their releases.
I won't be adding any additional information to this document.
As per the offer you are looking to see, I don't fully understand. What are you looking for? A gen 2 image with office on it?

Yes, @mimckitt , I'm looking for the latest Gen2 image with office in it ie. for the office-365 offer. I'm guessing the office-365 offer images would have additional bells and whistles for one to log into the OS with one's O365 id.

Thanks for that. Looking into it, the Windows 10 images with office plus installed do not support Gen2 at this time. The only Windows 10 versions I found that do are
Windows 10 Pro
Windows 10 Pro N
Windows 10 Enterprise
Windows 10 Enterprise N
Windows 10 Enterprise N 2019 LTSC
Windows 10 Enterprise N 2016 LTSB
Windows 10 Enterprise 2019 LTSC
Windows 10 Enterprise 2016 LTSB
I can adjust this document to show that the Pro and Enterprise editions do support gen2

Is there a tentative ETA for Gen2 support for the office-365 offer images? The latest version of Windows 10 Enterprise in the MicrosoftWindowsDesktop offer is 19h2. Is there an ETA for when the 20H1 version would be available?

I personally am not sure.
let me check and get back on this.

I worked offline and found at this point in time we have no plans to support the Windows + Office SKU for Gen2.
You could still of course install all the needed office parts after and it would still work just fine. But as far as a full packaged image offering, no plans.
If you have a business case for this you would like to share I would be happy to share it with the internal team on your behalf.

ok. Thanks for confirming.


Export projects from one instance to another

We should be able to transport a project submitted at the hackdash from one hackaton to another. One way to filter the list of hackathons, is to be able to select only hackathons created after the hackathon where the project is in the dashboard.

yes


Utterances comment feild not showing

Describe the bug
Utterances comments are now showing, I have setup utterances but the comment feild isn't showing even tho I added "comment = true" in the frontmatter of the MD file. I am sure that this isn't a issue with my setup because it works when I insert the script manually in a HTML file.
To Reproduce
Steps to reproduce the behavior:

Setup utterances
Enable comments
Scroll down to comment section
See error

Expected behavior
There should be a utterances comment field, but there is not.
Screenshots
After adding the script manually:

Unexpected Result:

Hugo version:
$ hugo version
hugo v0.92.0+extended linux/amd64 BuildDate=unknown

Desktop (please complete the following information):

OS: [Linux (Arch Linux (5.15.17-1-lts))]
Browser [Firefox Developer Edition]
Version [Rolling Release]

Additional context
https://github.com/AnonymousDebug/cyborgstation-website is my website repo and https://github.com/AnonymousDebug/cyborgstation-website-comments/ is my comments repo
Example: https://github.com/AnonymousDebug/cyborgstation-website-comments/issues/1

Could you please post the console output on browser? For example: F12 on chrome.
It's probably caused by the GitHub API rate limiter if configure correctly.

Referrer Policy: Ignoring the less restricted referrer policy “no-referrer-when-downgrade” for the cross-site request: https://github.githubassets.com/favicons/favicon-dark.svg [FaviconLoader.jsm:145:6](resource:///modules/FaviconLoader.jsm)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
This site appears to use a scroll-linked positioning effect. This may not work well with asynchronous panning; see https://firefox-source-docs.mozilla.org/performance/scroll-linked_effects.html for further details and to join the discussion on related tools and features! [376](https://github.com/razonyang/hugo-theme-bootstrap/issues/376#issuecomment-1029841253)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 6 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Error: Please use $(ref:runtime.getURL). [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Use of Mutation Events is deprecated. Use MutationObserver instead. [content.js:30:325](moz-extension://e598c9fa-e5b3-4416-89f7-6869527d41e0/includes/content.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 4 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Referrer Policy: Ignoring the less restricted referrer policy “no-referrer-when-downgrade” for the cross-site request: https://avatars.githubusercontent.com/u/76240678?s=32&u=9bef4ba714ff64f8f2add03edde4fd944886091e&v=4 [chunk-frameworks-952f6e63.js:1:16911](https://github.githubassets.com/assets/chunk-frameworks-952f6e63.js)
TypeError: can't access property "get", this.activityErrorsMap is undefined
2 [WebRequest.jsm:756:1](resource://gre/modules/WebRequest.jsm)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Error: Did not auto-fill. [background.js:24193:23](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 6 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved
10 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved
[content-inject.js:12](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content-inject.js)
Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved
14 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
This page is in Quirks Mode. Page layout may be impacted. For Standards Mode use “<!DOCTYPE html>”.
[bundle.min.3c71d0c53511dcc14607c666e44c8322e33c930bbe9106a33f2f0bb47ae02412.js:1:75149](https://www.cyborgstation.tk/js/bundle.min.3c71d0c53511dcc14607c666e44c8322e33c930bbe9106a33f2f0bb47ae02412.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Some cookies are misusing the recommended “SameSite“ attribute 15
Error: Promised response from onMessage listener went out of scope [background.js:490:167614](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/background/background.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope 17 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope [index.js:202](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/app/inlineForm/index.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope 17 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Error: Promised response from onMessage listener went out of scope [background.js:490:167614](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/background/background.js)
Unexpected value xMinYMin none parsing preserveAspectRatio attribute. [data:PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOng9Imh0dHA6Ly93d3cudzMub3JnLzE5OTk](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOng9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBub25lIj48Zz48cGF0aCBpZD0icCIgZD0iTTMzIDQyYTEgMSAwIDAgMSA1NS0yMCAzNiAzNiAwIDAgMC01NSAyMCIvPjx1c2UgeDpocmVmPSIjcCIgdHJhbnNmb3JtPSJyb3RhdGUoNzIgNTAgNTApIi8+PHVzZSB4OmhyZWY9IiNwIiB0cmFuc2Zvcm09InJvdGF0ZSgxNDQgNTAgNTApIi8+PHVzZSB4OmhyZWY9IiNwIiB0cmFuc2Zvcm09InJvdGF0ZSgyMTYgNTAgNTApIi8+PHVzZSB4OmhyZWY9IiNwIiB0cmFuc2Zvcm09InJvdGF0ZSgyODggNTAgNTApIi8+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHZhbHVlcz0iMzYwIDUwIDUwOzAgNTAgNTAiIGR1cj0iMS44cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz48L2c+PC9zdmc+)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Use of nsIFile in content process is deprecated. 4 [NetUtil.jsm:253:8](resource://gre/modules/NetUtil.jsm)
Security Error: Content at https://www.cyborgstation.tk/posts/foo/ may not load or link to resource://gre/modules/ExtensionContent.jsm.
Use of nsIFile in content process is deprecated. [NetUtil.jsm:253:8](resource://gre/modules/NetUtil.jsm)
Security Error: Content at https://www.cyborgstation.tk/posts/foo/ may not load or link to moz-extension://d5af42d3-7b89-4da7-9e69-c8e1cf5b235d/js/vapi.js.
Use of nsIFile in content process is deprecated. [NetUtil.jsm:253:8](resource://gre/modules/NetUtil.jsm)
Failed to open input source 'resource://gre/modules/ExtensionContent.jsm' [DevToolsUtils.js:670](resource://devtools/shared/DevToolsUtils.js)
Failed to open input source 'moz-extension://d5af42d3-7b89-4da7-9e69-c8e1cf5b235d/js/vapi.js' [DevToolsUtils.js:670](resource://devtools/shared/DevToolsUtils.js)
Use of nsIFile in content process is deprecated. 20 [NetUtil.jsm:253:8](resource://gre/modules/NetUtil.jsm)
‘src’ attribute of <script> element is not a valid URI: “/utterances.9ae412b8.js” [{22e18421-c811-4f8b-a7f5-0942046de306}:1:1](moz-nullprincipal:{22e18421-c811-4f8b-a7f5-0942046de306})
NotFoundError: No such JSWindowActor 'DevToolsFrame' 2
can't access property "isArticle", this.nativeTab.linkedBrowser is null [ext-browser.js:866](chrome://browser/content/parent/ext-browser.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 12 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Referrer Policy: Ignoring the less restricted referrer policy “no-referrer-when-downgrade” for the cross-site request: https://avatars.githubusercontent.com/u/76240678?s=32&u=9bef4ba714ff64f8f2add03edde4fd944886091e&v=4 [behaviors-99d7c9e0.js:10:39231](https://github.githubassets.com/assets/behaviors-99d7c9e0.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 6 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
TypeError: can't access property "get", this.activityErrorsMap is undefined
[WebRequest.jsm:756:1](resource://gre/modules/WebRequest.jsm)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 12 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Error: Please use $(ref:runtime.getURL). [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 6 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved
7 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope 10 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope [index.js:202](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/app/inlineForm/index.js)
Error: Promised response from onMessage listener went out of scope [background.js:490:167614](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/background/background.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope 7 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
This page is in Quirks Mode. Page layout may be impacted. For Standards Mode use “<!DOCTYPE html>”.
[bundle.min.3c71d0c53511dcc14607c666e44c8322e33c930bbe9106a33f2f0bb47ae02412.js:1:75149](https://www.cyborgstation.tk/js/bundle.min.3c71d0c53511dcc14607c666e44c8322e33c930bbe9106a33f2f0bb47ae02412.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 4 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Error: Promised response from onMessage listener went out of scope [background.js:490:167614](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/background/background.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope 17 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)```

Content blockers and firefox protection is off

It looks like that you're using a very old version of this theme, could you please upgrade the theme and then test again?

@razonyang I am a bit confused on how to do that, the .git directory in the bootstrap theme directory is missing, so I am not able to upgrade it, I removed the bootstrap theme directory and used git submodule add https://github.com/razonyang/hugo-theme-bootstrap themes/hugo-theme-bootstrap to re-install the theme, I then used v0.66.0 and ran hugo server, but comments widget still not visible, I have not commited it yet because I am really sure that I fucked up, what should I do in this situtation? Should I copy my config files of hugo and my content directory then configure it from scratch? or is there a better way to get out of the mess I have created?
Do note that the comments feild is visible, the label on top of it is visible but the widget isnt.
Console output:
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
TypeError: can't access property "currentSrc", tmp_el[i] is undefined [content.js:45:187](moz-extension://e598c9fa-e5b3-4416-89f7-6869527d41e0/includes/content.js)
Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved
7 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Switch to dark mode [main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js:12:21894](http://localhost:1313/js/main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js)
switch to palette: blue [main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js:12:23076](http://localhost:1313/js/main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js)
Message from assets/js/custom.js [main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js:16:9](http://localhost:1313/js/main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js)
GEThttp://localhost:1313/images/icons/icon-180x180.png
[[HTTP/1.1 404 Not Found 0ms]]()

GEThttp://localhost:1313/images/icons/icon-16x16.png
[[HTTP/1.1 404 Not Found 0ms]]()

GEThttps://utteranc.es/stylesheets/themes/preffered-color-scheme/utterances.css
[[HTTP/2 404 Not Found 104ms]]()

[Exception... "Favicon at "http://localhost:1313/images/icons/icon-180x180.png" failed to load: Not Found."  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: resource:///modules/FaviconLoader.jsm :: onStopRequest :: line 253"  data: no] [FaviconLoader.jsm:253:22](resource:///modules/FaviconLoader.jsm)
[Exception... "Favicon at "http://localhost:1313/images/icons/icon-16x16.png" failed to load: Not Found."  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: resource:///modules/FaviconLoader.jsm :: onStopRequest :: line 253"  data: no] [FaviconLoader.jsm:253:22](resource:///modules/FaviconLoader.jsm)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope 17 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Error: Promised response from onMessage listener went out of scope [background.js:490:167614](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/background/background.js)```

Console output of contact page (inserted widget manually):
```js
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
TypeError: can't access property "emailField", this.fieldBindingMap is undefined [content.js:295:219545](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
AbortError: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved [ConduitsParent.jsm:362](resource://gre/modules/ConduitsParent.jsm)
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
Promise resolved after context unloaded
[content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved
[content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved
[content-inject.js:12](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content-inject.js)
Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved
23 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved
[index.js:202](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/app/inlineForm/index.js)
Switch to dark mode [main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js:12:21894](http://localhost:1313/js/main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js)
switch to palette: blue [main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js:12:23076](http://localhost:1313/js/main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js)
Message from assets/js/custom.js [main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js:16:9](http://localhost:1313/js/main.695bb1eea5b042ccbcef991d3af42e07f06d272b0675969efc68b25a21bc23e4.js)
GEThttp://localhost:1313/images/icons/icon-180x180.png
[[HTTP/1.1 404 Not Found 0ms]]()

GEThttp://localhost:1313/images/icons/icon-16x16.png
[[HTTP/1.1 404 Not Found 0ms]]()

Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
[Exception... "Favicon at "http://localhost:1313/images/icons/icon-180x180.png" failed to load: Not Found."  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: resource:///modules/FaviconLoader.jsm :: onStopRequest :: line 253"  data: no] [FaviconLoader.jsm:253:22](resource:///modules/FaviconLoader.jsm)
[Exception... "Favicon at "http://localhost:1313/images/icons/icon-16x16.png" failed to load: Not Found."  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: resource:///modules/FaviconLoader.jsm :: onStopRequest :: line 253"  data: no] [FaviconLoader.jsm:253:22](resource:///modules/FaviconLoader.jsm)
Error: Please use $(ref:runtime.getURL). [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
TypeError: can't access property "emailField", this.fieldBindingMap is undefined 2 [content.js:295:219545](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope 17 [content.js:295](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Unchecked lastError value: Error: Promised response from onMessage listener went out of scope [index.js:202](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/app/inlineForm/index.js)
Error: Promised response from onMessage listener went out of scope [background.js:490:167614](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/background/background.js)
Some cookies are misusing the recommended “SameSite“ attribute 5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 [background.js:2807](moz-extension://c2282ba1-295b-42c4-85d4-57a71f68f7a4/background.js)
TypeError: can't access property "emailField", this.fieldBindingMap is undefined [content.js:295:219545](moz-extension://18374cc4-79fe-408d-8fbf-45d29183eec9/js/content/content.js)
Partitioned cookie or storage access was provided to “https://utteranc.es/utterances.html?src=https%3A%2F%2Futteranc.es%2Fclient.js&repo=AnonymousDebug%2Fcyborgstation-website-comments&issue-term=pathname&label=comment&theme=github-dark&crossorigin=anonymous&url=http%3A%2F%2Flocalhost%3A1313%2Fcontact%2F&origin=http%3A%2F%2Flocalhost%3A1313&pathname=contact%2F&title=Contact%20Us%20-%20CyborgStation&description=%20%20Name%20%20%20Email%20%20%20Message%20%20%20Send%20%20%20&og%3Atitle=Contact%20Us&session=a46ab9826afbd3ce286045b1%2BoSInFxMuiOMSxQAYCgjrUgsDoyw2%2FHo64fNyJf52KB8AY1UCiu0zndzRDTO%2B%2BjXwdL5ILX9Eu%2FXMPqW46wDHp0V6o70swmxeTWr14SZwaaVuwovOa0IU8KRceA%3D” because it is loaded in the third-party context and dynamic state partitioning is enabled.```

I do not have knowledge about javascript, but I can tell that the favicon icon isnt found and the github's user prefered color scheme which utterances will show the widget in is not found, which I think is the reason of the widget not rendering. However the widget is still rendering in the contact page in which I inserted it manually.

Also the site is working fine, but I am afraid that this can turn into a bigger mess sometime later, so I should probably re-install the theme from scratch. What do you advice?

That's OK. You can remove the themes folder and reinstall the theme.
Did you test it in other browser? Cloud you please provid your live site or repository, so that I can reproduce the issue.

@razonyang I did reproduce the issue on chromium (Version 98.0.4758.80 (Official Build) Arch Linux (64-bit)).
Console output on chromium:
Message from assets/js/custom.js utterances.css:1          Failed to load resource: the server responded with a status of 404 () manifest.json:1          Failed to load resource: the server responded with a status of 404 () manifest.json:1 Manifest: Line: 1, column: 1, Syntax error. utterances.css:1          Failed to load resource: the server responded with a status of 404 () manifest.json:1          Failed to load resource: the server responded with a status of 404 ()
The repository for my website is: https://github.com/AnonymousDebug/cyborgstation-website
Comments repo: https://github.com/AnonymousDebug/cyborgstation-website-comments/
Current production site: https://www.cyborgstation.tk

@AnonymousDebug I think the theme is a typo, it should be preferred-color-scheme.
https://github.com/AnonymousDebug/cyborgstation-website/blob/f1d905db97d76a2805d2fd5e13cc13602976ec56/config/_default/params.toml#L93

@razonyang It was a typo, my bad!


Version command line flag

Hey! Thank you for this great little software. Really enjoy it for my workflow. I have a feature request. It would be nice to get the version of the program as usual: wl-recorder --version but at the moment in the build I have It doesn't work, had to see installed packages with apt, to check the version! I think it would be useful, and It's pretty much expected!. The version number could also be printed at the top when wl-recorder --help is run.
According to the Ubuntu repositories I'm on 0.2-1build1

Thanks for the good suggestion, I have added an option -v / --version which outputs the version, git commit and build date.


fallthrough error

I am trying to install cereal. I cloned the GitHub url and made a build directory and did 'cmake' until then it was fine. When I tried to do 'make' it is showing,
cereal/./include/cereal/archives/json.hpp:211:33: error: this statement may fall through [-Werror=implicit-fallthrough=]
I am also attaching the image.

This warning was suppressed in the develop branch (see #432), can you try that?
Or you can use -DWITH_WERROR=OFF with CMake

Thanks a lot …..its solved !!


Fix incorrect project URL in NuSpec file

Updates #91

Changing this for now, but with the purchase of the domain, we should discuss whether we want it as that.


Error when converting .pkl file to .pt

I trained a stylegan2-config-e model (from the official repo) on a custom dataset with size 256*256, but when I try to convert the weights to .pt with convert_weight.py I get this error :
Traceback (most recent call last):
  File "convert_weight.py", line 226, in <module>
    state_dict = fill_statedict(state_dict, g_ema.vars, size)
  File "convert_weight.py", line 192, in fill_statedict
    vars[f'G_synthesis/noise{i}'].value().eval()
  File "convert_weight.py", line 98, in update
    raise KeyError(k + ' is not found')
KeyError: 'noises.noise_0 is not found'

I don't know why the state_dict doesn't include this key ?

Could you check model.py? https://github.com/rosinality/stylegan2-pytorch/blob/master/model.py#L424

Thank you it works now, but consider updating the files of the models in the GanSpace repo, because the model.py in the that repo is different from the one that you sent me.


Bump surefire and failsafe plugins to 3.0.0-M6

Bypass buggy 3.0.0-M5 version; this fixes #2555

This looks good so far to me. The tests that were failing with M5, ShellServerIT and RowHashIT, now pass on this branch.
For some reason there is a test failing in the checks, MiniAccumuloClusterImplTest, but it passes for me when run locally so not sure whats going on there.

This looks good so far to me. The tests that were failing with M5, ShellServerIT and RowHashIT, now pass on this branch.

I confirmed that too. It is unlikely that it broke any other tests, but I'll try to run the full ITs, just in case.

For some reason there is a test failing in the checks, MiniAccumuloClusterImplTest, but it passes for me when run locally so not sure whats going on there.

Yeah, it's probably just a temporary resource issue in the GH actions runner. I triggered a re-run.

All ITs passed, so I'll merge this.


Reserved C keyword problems

Some reserved C keywords are not detected by rock and thus compilation fails at the C level. Keywords I have detected until now are: float, void.
Should be an easy fix, will do that later :)
On the other hand, reserved keywords are not taken into account in a for loop declaration. For example, rock does not mark the following code as invalid:

import structs/ArrayList

for(char in [1,2,3] as ArrayList) {
    char toString() println()
}

Wich fails at C compile time.

Aw yeah, C keyword checking is kind of shaky. I'm pretty sure it can be improved upon :) (and even done in a much better way in oc)

By the way, should these symbols really be blocked from being used in ooc code? Correct me if I'm wrong but as I recall, it has been a goal of yours to make ooc independent from C, while this shows the profound links the current implementation has with C. In my honest opinion, this should not be the case but rather every backend should handle code generation to avoid similar problems. For example, I think that it would be more reasonable to allow these names and when the code is generated, let the C backend mangle them. This would also make ooc more open to other implementations as compiler specific restraints will be less apparent.
Tl;dr: Why not just mangle those reserved keywords at  code generation?

That's at the cost of readability of the generated C code, but I think we're way past this point anyway, so yes, I'd be in favor of letting the backends mangle and not reserve C keywords in ooc code.

Excellent :)
I may work on a couple of bugs on rock tomorrow so this will be on my todo list.

I think refactoring rock to allow that is an undertaking not to be underestimated! Keep in mind that if, for example, you escape 'char' to 'char_C' or the like, you'll have name collisions with a variable named 'char_C' to begin with.
The simple solution is to use a char combo that you can't have in ooc identifiers, but that doesn't exist right now. What you could do is escape all '_' in ooc identifiers to '__' in C identifiers, so that one couldn't obtain 'char_C' from an ooc identifier. Makes sense?

Yes this could be a possible solution to the problem. Thanks for the idea :-)
I will see what I can do. What I am thinking is to have a list of the reserved C keywords, like there is now and add some kind of identifier processing method in the C backend, witch will replace _ with __ and mangle the identifier if it is parte of the reserved keywords. It would also be an option to generate a random identifier but not without risk (there could still be this identifier "clash" problem)
Anyway, I don't quite remember the way rock generates the C code, apart from some really geenral ideas behind it, so I will see and adapt.

rock generates the C code directly from the ooc AST, or to be clearer, a post-processed version of the ooc AST. As a result, this makes it necessary for the ooc AST and the C language to map more or less cleanly. That's why we have so many tree manipulation routines.
However, in oc, we have an ooc AST which is then turned into a C AST, allowing vastly different representations and a cleaner handling of ooc in general.
For rock, there are a few helpers to write identifiers, I guess you'll have to look in every corner to not miss one. Again, if we had an Identifier class or something (like I had to do in my school Scala subset compiler project) maybe this would be easier to handle.

Ok then I will start working on this after I've finished up with another issue.
The unmangled keyword does give some interesting possibilities (like the stuff that is done to interface rock with nagaqueen), while it is true it is implementation-specific but I don't see how we could replace it.

Also apparently at the moment rock only tests if variable declarations have the name of a reserved keyword, witch would be fine without the existence of unmangled and if the for loop variable declaration was tested too, witch are the cases that can cause compilation to fail I have discovered up until now. I guess the for loop variable gets transformed into a variable declaration later on, so the checks necessary on the backend should not be that difficult to implement. Starting :D

I've started the changes but I am segfaulting for some reason... Anyway, I will continue later today or tomorrow :)

Looking nice. rock segfaults can be a bit irritating. Do you know all the necessary gdb/recompilation/safe_rock voodoo? I'd assume yes since you've already fixed so many bugs :)

I've used my share fare of gdb, plus I think fredreichbier has put out a tool that unmangles ooc symbols in gdb, this will be very useful :D I don;t know anything about safe_rock though :-/

So apparently I hadn't declared the valid? function as static but after doing so rock segfaults on self-compiling >.<

So apparently I hadn't declared the valid? function as static but after doing so rock segfaults on self-compiling >.<

See that's what safe_rock is about. When you're meddling with powers that mighty, you want to keep a safe copy of rock around.
So the workflow goes a little bit like this.  What it does in reality is something like OOC=bin/safe_rock make self, only shorter.
That'll save you a lot of headaches :)

Just a quick update: My had something to do with static arrays (ArrayLists's ? ), changing the reservedWords and reservedHashes variables to global fixed the issue. Now, I seem to have broken generic arguments (compilation fails at C level) but I think it's ebcause I haven't made any changes to VariableAccess writing witch I will do promptly.


v1.21.1 support?

I'm new to Nameless (it is AMAZING!), however, I am running the latest Minecraft which is 1.21.1. The only plugin I can find appears to be for 1.20. Is there any expectation of this being updated?
I'll provide the error I am receiving on 1.21.1 in case there's another issue going on.
12:20:25 Starting minecraft server version 1.21.1
Loading properties
This server is running CraftBukkit version 4306-Spigot-a759b62-bd8aded (MC: 1.21.1) (Implementing API version 1.21.1-R0.1-SNAPSHOT)
Server Ping Player Sample Count: 12
Using 4 threads for Netty based IO
Debug logging is disabled
Default game type: SURVIVAL
Generating keypair
Starting Minecraft server on <IP_ADDRESS>:2566
12:20:26
Using epoll channel type
Server thread/ERROR12:20:26
Could not load 'plugins/59032-v544056__NamelessPluginforv2.jar'
Console12:20:26
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
	at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:170) ~[spigot-api-1.21.1-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:158) ~[spigot-api-1.21.1-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:122) ~[spigot-api-1.21.1-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.craftbukkit.v1_21_R1.CraftServer.loadPlugins(CraftServer.java:464) ~[spigot-1.21.1-R0.1-SNAPSHOT.jar:4306-Spigot-a759b62-bd8aded]
	at net.minecraft.server.dedicated.DedicatedServer.e(DedicatedServer.java:236) ~[spigot-1.21.1-R0.1-SNAPSHOT.jar:4306-Spigot-a759b62-bd8aded]
	at net.minecraft.server.MinecraftServer.y(MinecraftServer.java:1017) ~[spigot-1.21.1-R0.1-SNAPSHOT.jar:4306-Spigot-a759b62-bd8aded]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:318) ~[spigot-1.21.1-R0.1-SNAPSHOT.jar:4306-Spigot-a759b62-bd8aded]
	at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml
	... 8 more

Where did you download the plugin from? The name does not look right. Try downloading the latest build from here: https://ci.rkslot.nl/view/NamelessMC/job/Nameless Plugin/

Whatever you have downloaded is indeed not the correct plugin jar file. Did you perhaps rename the zip file, containing multiple jar files, to .jar?

I found that file directly from your own docs
https://docs.namelessmc.com/en/faq
See the "Where can I download the NamelessMC plugin" header.

Where did you download the plugin from? The name does not look right. Try downloading the latest build from here: https://ci.rkslot.nl/view/NamelessMC/job/Nameless Plugin/

I will retest with one from there. Thanks!

It works great, thank you kindly!


Fix typo on rx_metrics direction label.

Change direction label for rx_metrics to 'rx'.
Fixes #30

Signed the CLA (for the 1-byte change).

thank you @clemensw! you never know how much intellectual property is hiding in a byte... ;p

@clemensw Thanks for signing the CLA! Just think of all of the future multibyte linkerd-tcp changes you can make now :)