review [TAGS], #545

1401 + 1406: in this PR currently have
[NOTE] Disabling fonts can uglify the web a fair bit
I'm OK with changing this to [BREAKAGE]. While it doesn't really break anything (maybe some OSes/distros and language settings = some tofu), it would be good to include in the search parameters for end-users - thought?

:bulb: idea from something @atomGit said. Use [SETUP-BREAKAGE] and [SETUP-BEHAVIOR], so all ([setup) or either (kage], vior]) can be searched on. Personally I don't think it's a huge deal, users will only need to do the initial setup once - two searches is nothing.

[BEHAVIOR] changes how Firefox itself works, i.e. not directly website related

when I read this I expected there to be ~100 of those tags. Not really liking it. [SETUP] on a few select ones makes sense but BEHAVIOR on only a couple really doesn't IMO.

[BEHAVIOR] If you want or use Session Restore, then this isn't for you.

I have both of those set and Session Restore works just fine. (?!?)
1202: we don't actively change security.tls.version.min anymore so IMO those 2 lines about breakage can go
1212: breakage due to hard-fail is very rare. Not worth a tag IMO
1222: can "break" Antivirus but not sites or FF itself. NOTE?
1263+1264: breakage is probably very rare at this point. Don't need a tag
can we just remove 2710? People can use a private window, TC or just clear offline data on shutdown (or manually)
4502 addresses something that a lot of people didn't or don't like about RFP. It should be highlighted with a tag
2403 under 9999: breakage and/or warning tags in very old deprecated prefs are not necessary.

when I read this I expected there to be ~100 of those tags. Not really liking it.

I know. I initially had [FF CHANGE] but that sucks as well. I really want to differentiate between website breakage and UX/Chrome/workflow type items. We'll see if :cat2: can think of something (and we can make the readme line a bit clearer maybe). [setup] doesn't allow for a decent difference IMO (and I want to get away from setup to making this mostly match (if not completely match) a relaxed sticky.

breakage and/or warning tags in very old deprecated prefs are not necessary

I want information to stay (in general), rather than prune a living document (if that makes sense) - we worked hard for all that :) That said, it's FF44, so yeah, fukit :+1:

session restore

I don;t use sessions myself, so what pref(s) then disable session restore? just 0102? can you check, in which case I can remove the two and stick one on 0102

[DISCLAIMER] any breakage due to this user.js is the Russian's fault, sources say

changes under "tweaks" & "moar tweaks" patches

[BEHAVIOR] If you want or use Session Restore, then this isn't for you.
I have both of those set and Session Restore works just fine. (?!?)

:heavy_check_mark: removed the bit in 0102, it still has a behavior tag since it affects recently closed tabs
:question: does 0102 need one then

1202: we don't actively change security.tls.version.min anymore so IMO those 2 lines...

:heavy_check_mark:  done

1212: breakage due to hard-fail is very rare. Not worth a tag IMO

:x: see #545 which was started all because some had issues with this pref. The thread is in another issue, but I  myself flip this in overrides due to breakage. It's handy for troubleshooting

1222: can "break" Antivirus but not sites or FF itself. NOTE?

:question: I'm confused. I thought if AV breaks the web content cannot be gotten, hence web breakage (that's my limited experience) nvmd, I am thinking about 1260 when MitM can't get the certs. I am probably still confused
:heavy_check_mark: DONE, changed to warning (because its a security thing, don;t want anyone at risk, hence not a note)

1263+1264: breakage is probably very rare at this point. Don't need a tag

:heavy_check_mark: DONE

can we just remove 2710? ...

:x: But if we remove it, then people will say, what about this. Leaving it in to inform users.
:question:  Change it to a warning instead? "if you disable this, enjoy a broken web"

4502 addresses something that a lot of people didn't or don't like about RFP...

:heavy_check_mark: DONE, changed it to behavior

2403 under 9999: breakage and/or warning tags in very old deprecated prefs are not necessary.

:heavy_check_mark: DONE, see earlier comment, saved a line

can you double check I got all that correctly? Or just re-review. Or something. I need :coffee:

I have both of those set and Session Restore works just fine

both? I only changed 1020. Did you mean the other one was 1023? Or did you think we should do something with the ones in 1021+1022?

I don't even know how you can close Firefox with 2 or more windows open

I don't even know how you can close Firefox with 2 or more windows open

It remembers multiple window sessions, the last x that are active (in other words the last three closed). As soon as the last window is closed, so is firefox and the x sessions are locked in.

Are you sure about 1020.

yes. I have both these prefs set to 0 (same as our default) and my last closed window with all its tabs restores just fine. AFAIK the 1020 title is incorrect because I don't think you can really disable the session restore file. (except perhaps with PB-always-on mode) You can tell FF not to restore it on startup but stuff will still get written to it.

so ignoring all the session restore stuff (see issue #563 ) which we can do next, I'm left with a couple of things (and we can always do more changes later
current PR
/* 2710: disable DOM (Document Object Model) Storage
 * [BREAKAGE] This will break a LOT of sites' functionality AND extensions!
 * You are better off using an extension for more granular control ***/
   // user_pref("dom.storage.enabled", false);

I'll change it to a warning. Warning are to be heeded and used sparingly. We currently have 8 and only 6 are for inactive prefs to educate people. This fits that bill. That's one less thing for users to check when troubleshooting.

moat .. that's it .. typos .. going to bed. Anyway, want :cat2: 's input before committing :nite:

1222 should also be default if you use proxy as a fiddler with self-signed certs for decrypting SSL.
Just saying if you would like to mention in description.
Cheers

[BREAKAGE] known to cause websites to break, or to impact performance

If possible, it might be nice to split these into [BREAKAGE] and [PERFORMANCE] or something like that...some people might have a higher tolerance for one than the other.

I don't really want to fragment tags any more than we have to. Breakage count is now 18, of which only 1 mentions performance: 2508 (HWA)
2421 (baseline ion, JIT) which from my experience also causes (very rare) actual breakage (eg unable to check checkboxes, or get comboboxes to drop down), and  and 2517 (media capabilities), are both inactive. So I changed them to [NOTE], and if people don't read what it says when they use it, then that's on them. Two less items for people to worry about
That leaves HWA and I feel it's an important one for users to look at

I just wanted to split those that affect web content from those that don't. I do not like the word setup (although both tags can be used for that), it's also a troubleshooting thing. And can mostly (or completely) match a relaxed sticky. A hardened sticky could mirror another tag (we're getting a bit complex here ahead of time, because most inactive breakage & some inactive warning = some/most hardening).
My vision for the relaxed sticky is two part:

FF UX/Chrome etc (non web site related) = relaxing shoulder surfers stuff (urlbar stuff, forms, history, save to desktop), relaxing disk avoidance (cache, session restore, clearing data), internals (extension scopes), and other UX workflow items ("open with")
actual web site stuff
and the one outlier IMO, HWA as a perf one (which fits under web site stuff) .. As I type this I can think of other major perf prefs - HTTP2, AltSrv, SSL sessions - but I'm pretty sure we wouldn't add those to a relaxed sticky.

The only way I can accurately describe these is

make ff BEHAVE like normal
stop making web sites BREAK

So now I don't know what to do. You all seem to hate my visionary world beating unique take on problem solving

[SETUP] you may want to decide this before first applying these settings

But breakage is also part of setting up the user.js the first time (and warnings but changing them is bad bad bad, and even notes have significance). Both tags are part of a larger thing called setting up your user.js, which is what the preceding paragraph says. The above implies or at least repeats what has already been said and doesn't signify the difference between the two, at all.
Come on guys (and gals).. vision people... look at the wood for the trees

Either come up with a better word, or lets roll with it. :cat2: , go get your thesaurus
PS: I suggested this

OT: @claustromaniac your Compare-UserJS is broken for me because I don't have .NET installed.  Do you work at mozilla by any chance? ;)
No seriously, it wasn't slow to begin with so why add another dependency? You also mention that PS could perhaps work on linux but I don't know if anyone would want to install .NET (if that's even possible) for a script that worked perfectly fine without it. Just my 2 cents

they should be expert enough to figure it out themselves? We'll see what E says

I agree. We have a HTTPS section and people who need to install a custom cert for things like fiddler should have no problem identifying the pref(s) they need to change

OT: @claustromaniac Compare also broke for me. If E hadn't piped up, I would have forgotten to tell you. Win7 and it requires no spaces in the path (pretty sure that's what did it) or .bat gives an error.

PS: I suggested this

That LGTM if you are willing to go with it.

your Compare-UserJS is broken for me because I don't have .NET installed.

Maybe install .NET? PowerShell is built on .NET. How TF can you even run PowerShell without it?
The Linux packages come with bundled dependencies IIRC, and my script uses some archaic classes that existed long before .NET Core was a thing. The only reason I don't say it works on Linux with certainty is because I didn't test it myself, and so far no one else has informed me if it does or not.
What kind of error is it throwing, if any?

it requires no spaces in the path (pretty sure that's what did it) or .bat gives an error

Is that true for the last version? I thought I fixed that some time ago (at least it works for me). Look here. Maybe that commit is what broke it for you? if that's the case IDK what to do, because I have that same issue without that change.

https://github.com/claustromaniac/Compare-UserJS/issues/10

Maybe install .NET?

and patch that shit every month?! yeah no thanks

What kind of error is it throwing, if any?

something about Collections not found

just waiting on the Big E ....bump @earthlng


NextJS + GraphQL: useContentfulLiveUpdates returns old data

When using the useContentfulLiveUpdates hook with initial data and passing it a GraphQL query (DocumentNode) the hook returns the initial data on every update.
Screenshots / example

Context (please complete the following information):

Live preview SDK version number: 2.7.1
GraphQL API
React 18.2.14
NextJS 13.4.9
graphql-request 6.1.0
graphql-tag 2.12.6

Additional context
I'm fetching the data in getServerSideProps and passing the query and result to the client. The useContentfulLiveUpdates hook is given the result as initial data and the query in the options.
With the debugMode turned on in ContentfulLivePreviewProvider I can see updates are registered but even in the messages in console, the data recieved are the initial data. If I click on the "Refresh page" button the page is correctly updated.

page.tsx*

export const getServerSideProps: GetServerSideProps = async (context) => {
  const testQuery = gql`
    query Frontpage {
      frontpage(id: "7DyhlXleGiQ8SNvxKBfmaM") {
        __typename
        sys { id }
        internalName
        url
      }
    }
  `
  const testResponse = await request(process.env.CTF_API_ENDPOINT || '', testQuery, {}, {
    'Authorization': `Bearer ${process.env.CTF_API_TOKEN || ''}`,
    'Content-Type': 'application/json'
  }) as { [key: string]: any }

  return {
    props: {
      testQuery: JSON.parse(JSON.stringify(testQuery)), // Required for NextJS to serialize the data
      testResponse,
    }
  }
}

const Frontpage: NextPageWithLayout = (props: FrontpageProps) => {
  const test = useContentfulLiveUpdates(props.testResponse, { query: props.testQuery })
  useEffect(() => { console.log(test) }, [test])

  return (
    ...
  )
}

hi @sunehinz thank you for bringing this up. Can you please show me how you have setup the ContentfulLivePreviewProvider?

Sure!
import Head from 'next/head'
import { NextPage } from 'next'
import type { AppProps } from 'next/app'
import { ReactElement, ReactNode } from 'react'
import { ContentfulLivePreviewProvider } from '@contentful/live-preview/react'

import '../styles/globals.css'

export type NextPageWithLayout<P = any, IP = P> = NextPage<P, IP> & {
  getLayout?: (page: ReactElement, pageProps: BaseProps & { [key: string]: any }) => ReactNode
}

type AppPropsWithLayout = AppProps & { Component: NextPageWithLayout } & { pageProps: { [key: string]: any } }

export default function App({ Component, pageProps }: AppPropsWithLayout) {
  return (
    <>
      <Head>
        ...
      </Head>
      <ContentfulLivePreviewProvider
        locale="en-US" // Required: allows you to set the locale once and have it reused throughout the preview.
        enableLiveUpdates={process.env.CTF_LIVE_UPDATES === 'true'} // Optional: allows you to toggle live updates which are on by default.
        enableInspectorMode={process.env.CTF_INSPECTOR_MODE === 'true'} // Optional: allows you to toggle inspector mode which is on by default.
        debugMode={process.env.CTF_DEBUG_MODE === 'true'} // Optional: allows you to toggle debug mode which is off by default.
      >
        ...
          {Component.getLayout
            ? Component.getLayout(<Component {...pageProps} />, pageProps)
            : <Component {...pageProps} />
          }
        ...
      </ContentfulLivePreviewProvider>
    </>
  )
}

@sunehinz Does the same thing happen when you don't supply the GraphQL query to the hook?
const test = useContentfulLiveUpdates(props.testResponse,)

If the previous suggestion doesn't work, could you please submit a minimal reproducible example to help with the investigation?
Feel free to use CodeStandbox or any other similar service of your choosing.

Created a minimal example at CodeSandbox.
Please note that:

I did not provide an endpoint and token in the .env file
The page to display changes are at /da-dk

@sunehinz I can't open the project, maybe a permission issue?

@sunehinz I can't open the project, maybe a permission issue?

My mistake. I've updated the link above to point towards the correct CodeSandbox.

Hi @sunehinz I was able to check out your project thanks!
It seems like we have an issue when the graphQL Query gets provided to the useContentfulLiveUpdates hook. If you remove the query, then the live updates are working correctly. I added a ticket in my teams backlog to have a further look at the issue. If you are not using graphQL aliasing, then you can continue using live preview without providing the query to the hook.
I will close this issue now but will keep you updated when we release a fix.
import { NextPageWithLayout } from "../_app";
import { GetServerSideProps } from "next";
import { DefaultLayout } from "@/layouts";
import { useContentfulLiveUpdates } from "@contentful/live-preview/react";
import { request } from "graphql-request";
import { DocumentNode } from "graphql";
import gql from "graphql-tag";
import { useEffect } from "react";

type FrontpageProps = {
  testQuery: DocumentNode;
  testResponse: any;
};
const query = gql`
  query Frontpage {
    frontpage(id: "XlM2YC2DSAQa7903jEuVg", preview: true) {
      __typename
      sys {
        id
      }
      internalName
      url
    }
  }
`;

export const getServerSideProps: GetServerSideProps = async (context) => {
  const testResponse = (await request(
    process.env.CTF_API_ENDPOINT || "",
    query,
    {},
    {
      Authorization: `Bearer ${process.env.CTF_API_TOKEN || ""}`,
      "Content-Type": "application/json",
    }
  )) as { [key: string]: any };

  return {
    props: {
      testResponse,
    },
  };
};

const Frontpage: NextPageWithLayout = (props: FrontpageProps) => {
  //do not provide the GraphQL query to the hook for now...
  const test = useContentfulLiveUpdates(props.testResponse);

  useEffect(() => {
    console.log("updated data", test);
  }, [test]);

  return <div>{test.frontpage.internalName}</div>;
};

Frontpage.getLayout = DefaultLayout;
export default Frontpage;

Fixed as part of https://github.com/contentful/live-preview/pull/288


$meteorObject.save() to return a promise instead of nothing

would be nice if $meteorObject.save() returned a promise so stuff can be done asynchronously/sequentially and errors can be handled easily
dude, awesome release btw -- 0.6 is a huge leap forward

if I'm not mistaken calling $meteor.save() is actually a synchronous call since it updates the minimongo and the server is updated later with meteor's latency compensation.
So if it is, adding a promise isn't really necessary.
@Urigo thoughts?
@srtucker22 Did you find a case where you called save and the change wasn't available right after the call?

haven't had the issue where the change wasn't available right after, but i was running into the following:
let's say i'm trying to update an object with some validation, like with collection2 and i fail the validation, which returns an error. with collection.update i can get an error in the callback and handle the error, but with $meteorObject.save i won't get anything back, and i can't seem to catch the error in a try/catch.

Yes @srtucker22 you are right.
Also this is something we do already in the @meteorCollection save method.
I will add it tomorrow

Awesome
Next one I spot I'll submit a pull request :)
Sent from my iPhone

On Jan 19, 2015, at 7:36 PM, Uri Goldshtein<EMAIL_ADDRESS>wrote:
Yes @srtucker22 you are right.
Also this is something we do already in the @meteorCollection save method.
I will add it tomorrow
—
Reply to this email directly or view it on GitHub.

Just released the new version which includes this feature

Dear!
I thought you  might like that stuff, just take a look,  it is  really cool http://rdocynkibe.liang-shi.com/e4orde
jakob


Scrutinizer Auto-Fixes

@JoseCage requested this pull request.
It consists of patches automatically generated for this project on Scrutinizer:
https://scrutinizer-ci.com/g/doesangueorg/doesangue-core/

Codecov Report

:exclamation: No coverage uploaded for pull request base (development@3784afe). Click here to learn what that means.
The diff coverage is 50%.

@@              Coverage Diff               @@
##             development      #39   +/-   ##
==============================================
  Coverage               ?   21.73%
  Complexity             ?      107
==============================================
  Files                  ?       34
  Lines                  ?      368
  Branches               ?        0
==============================================
  Hits                   ?       80
  Misses                 ?      288
  Partials               ?        0

Impacted Files
Coverage Δ
Complexity Δ

app/Http/Controllers/API/V1/DonorsController.php
0% <0%> (ø)
7 <0> (?)

...p/Http/Controllers/Auth/AuthenticateController.php
69.04% <60%> (ø)
8 <0> (?)

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 3784afe...eaa566b. Read the comment docs.


Impl AsyncWrite for cobertura output

So far, this PR is just me exploring with implementing AsyncWrite. The current 'blocker' is that the Writer implementation that uses async doesn't have 'high level' functions like create_element which we use from the sync impl. Next time, or the next person that picks up this PR should figure out how to have async versions of those high level functions.

Codecov Report

Merging #3431 (2c429f9) into main (804b299) will decrease coverage by 2.90%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #3431      +/-   ##
==========================================
- Coverage   33.59%   30.70%   -2.90%
==========================================
  Files         300      135     -165
  Lines       37125    14508   -22617
==========================================
- Hits        12472     4454    -8018
+ Misses      24653    10054   -14599

see 165 files with indirect coverage changes


How long does it take for new custom role creation or updates to the JSON definition to apply to an assigned scope?

Azure documentation issue guidance
Thanks for opening an issue in the Azure technical documentation repository.
We use GitHub issues as the primary channel for customer and community feedback about the Azure documentation.
Creating an issue
We prefer that you create documentation feedback issues using the Feedback link on the published article - the feedback control on the doc page creates an issue that contains all the article details so you can focus on the feedback part.
You can also create a feedback issue here in the repo. If you do this, please make sure your issue lists:

[ ] The relevant Azure service or technology.
[ ] A link to the published documentation article that you have feedback about.
[ ] Clear, specific feedback that the author can act on.

Pull requests and article contributions
If you know the change that is needed in an article, we encourage you to submit the changes directly using a pull request. If the change is large, or if you want to contribute an entire article, follow these guidelines:

[ ] Don't surprise us with a big pull request or a pull request with a new article! Submit an issue that describes the details of the proposed large change or new article.
[ ] Include the service or technology area.

We'll route the issue to the appropriate content team for review and discussion.
Tech support and product feedback
If you would like to contact Microsoft about other things, such as product feedback or tech support, please review these guidelines:

If you need technical support using Azure, the paid and free support options are described here: https://azure.microsoft.com/support/options/.

Each article in the Azure technical documentation contains a product feedback button - it's best to submit product feedback directly from a relevant article. Otherwise, you can submit product feedback for most Azure products in the following product feedback forum: https://feedback.azure.com/forums/34192--general-feedback.

@autocloudarc -  Thank you for your question.
Can you please share with us the URL of the document that you are having issues with?
Please note that we scope issues on this repo to feedback related to the docs. If you have a product question, please post it on Microsoft QnA or Stack Overflow. Thank you for your understanding.

Sure, it's: https://docs.microsoft.com/en-us/azure/role-based-access-control/custom-roles
It just doesn't mention when we should expect a manual change to the JSON role definition from the portal to take effect, so I'm asking on behalf of one of my clients because he demonstrated that even after editing a custom role JSON definition in the portal, the changes didn't apply during his tests until about 30 minutes later, but wanted to know if there is a refresh cycle (as with Azure policies) that can be shared. Thanks.

Thank you for providing the document details. It looks like you have an issue with the product itself and this feedback is not related to the docs improvement. In this forum, we focus on improving the docs and feedback related to docs only.
Do you mind posting your question on Microsoft QnA as our engineers and community are actively working on answering questions related to the product on the forum.
At this moment, Since there is no doc update required, We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Pulp operator has moved to namespace-only mode, causing installation issues for other operators

As of version 0.7.1, the pulp operator has moved to running in namespace-only mode (as opposed to cluster-wide mode). By default the chart enables it to create its own operatorgroup in openshift-operators, which can block other operators from installing or upgrading.
Version 0.8.0 is current as I write this.
This can be worked around at least somewhat by setting pulp-operator.values.operatorgroup.create: false; there should probably be a better long-term solution

@mhjacks im actually working through the testing of this as we speak on a separate branch. You can track my progress for which I plan to PR this week here
Specifically here


Parse Server doesn't return sessionToken on Parse.User.current().fetch() on JS SDK

In my Facebook application, when I call Parse.User.current().fetch(), Parse Server won't return sessionToken for that user as Parse API do. After that JS SDK will save that response (without sessionToken) into localStorage, which made all request after that not include sessionToken.
In my case, after call Parse.User.current().fetch(), I cannot call any cloud function because cloud code will check if the request is called by a logged-in user.
I have added two images, one is call fetch current user via Parse API, and one via Parse Server, 2 servers connected to the same database.
Response from Parse API

Response from Parse Server (missing sessionToken)

After a long time research, I figured out that this error is caused by this #852

Fixed by 857, will be in next release.  :+1:


Could not resolve cz-git. Cannot find module 'cz-git'.

✅ Checklist

[X] I am using the latest version
[X] I have searched FAQ

📄 System Info
System:
    OS: macOS 12.6
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 1.13 GB / 16.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 16.6.1 - ~/.nvm/versions/node/v16.6.1/bin/node
    Yarn: 3.3.1 - ~/.nvm/versions/node/v16.6.1/bin/yarn
    npm: 7.20.3 - ~/.nvm/versions/node/v16.6.1/bin/npm
    Watchman: 2<IP_ADDRESS> - /usr/local/bin/watchman
  npmGlobalPackages:
    commitizen: 4.2.6

🔎 Description
Concise Description
My package manager is<EMAIL_ADDRESS>which doesn't generate a node_modules directory. So I couldn't add config like this:
{
  "scripts": {

  },
  "config": {
    "commitizen": {
      "path": "node_modules/cz-git"
    }
  }
}

When I tried modifying "path": "node_modules/cz-git" to "path": "cz-git", I encountered an error:
Could not resolve cz-git. Cannot find module 'cz-git'

However, the way is OK in git-cz. Does cz-git support Yarn Berry? How to add config in this case?
Expected behavior
I could use cz-git in Yarn Berry.
Steps to reproduce
Screenshots or Screen Recording(if possible)

🔗 Reproduction link / repo:
No response

which doesn't generate a node_modules directory.
it causes the commitizen CLI cannot find the cz-git adapter. This is out of my control.

You can have try my solution:

Install cz-git globally
Or try czg. alternative to commitizen CLI + cz-git  https://cz-git.qbb.sh/cli/

I'll be testing yarn3 later today

I made an example repo. Hope it will be helpful to your project. If you have any other questions, can come back to discuss
https://github.com/Zhengqbbb/czgit-playground/tree/czg-yarn-v3

which doesn't generate a node_modules directory.

It causes the commitizen CLI cannot find the cz-git adapter. The process is commitizen CLI behavior, not controlled by cz-git

I think it might not be commitizen's fault.
After reading commitizen's code, I fond that commitizen uses require.reslove() to resolve the path of a adaptor.
Then I ran a demo.

Oops!
However, I tested git-cz, it ran successfully.

Why?

 Use this to enable global mode.
The essence is that you need to pass my adapter bin path to commitizen CLI.
https://cz-git.qbb.sh/guide/#as-global-use.
echo '{ "path": "cz-git" }' > ~/.czrc = require.reslove()

Yeah, I get it. I have no other questions. Thanks!


Can Docsy version docs sub-paths yet?

@chalin I recall from a few years ago, Docsy could only do versions of the entire /docs tree. Has this changed? It'd be great if we could get stuff like spec or semconv versioned on the website.

What is/are the use cases that you have in mind?
You recollection is correct and that has not changed, out-of-the-box, but I'm sure we can get it to work for the spec(s).


BTC USD Conversion

class CurrencyConverter implements Interaction
{
    /**
     * @var Converter
     */
    protected $converter;

    public function __construct()
    {
        $swap = (new Builder())
            ->add('cryptonator')
            ->build();

        $exchange = new SwapExchange($swap);
        $currencies = new AggregateCurrencies([
            new BitcoinCurrencies(),
            new ISOCurrencies(),
        ]);
        $this->converter = new Converter($currencies, $exchange);
    }

    /**
     * Handle the interaction.
     *
     * @param Money $money
     * @param $currency
     * @return mixed
     */
    public function handle(Money $money, $currency)
    {
        return $this->converter->convert($money, new Currency($currency));
    }
}

When I am trying to convert USD to BTC
Error is Cannot find currency BTC
If I try to convert USD to XBT
Error is Cannot resolve a currency pair for currencies: USD/XBT
What is the correct way to convert USD or other currencies to BTC?

My other question is If I should create Currency object as XBT for all coins ( such as ETH, BTC )

I think there is a mismatch between your currencies that go through the Money package and the ones that are available in SwapExchange. Can you be a little more precise around the Exception that is thrown?

Closing due to inactivity.


Update SBOM Score doc

Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the CODEOWNERS.
What Type of PR is This?

[ ] Issue
[ ] Feature
[x] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

Issue(s)

House Keeping
Some items to keep track of. Screenshots of changes are optional but would help the maintainers review quicker.

[x] Tested Locally
[ ] Optional Screenshot.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65e832ccc14acbf3f9bc45d9--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65e8364c314708e8b5d55b8f--harness-developer.netlify.app


chore(main): release 2.1.2

:robot: I have created a release beep boop
2.1.2 (2023-06-29)
Miscellaneous

update the token that release-please runs with. (#255) (16a87c8)

This PR was generated with Release Please. See documentation.

Codecov Report
Patch coverage has no change and project coverage change: -0.35 :warning:

Comparison is base (16a87c8) 90.34% compared to head (5d66529) 90.00%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #256      +/-   ##
==========================================
- Coverage   90.34%   90.00%   -0.35%
==========================================
  Files           9        9
  Lines         290      290
==========================================
- Hits          262      261       -1
- Misses         28       29       +1

see 1 file with indirect coverage changes

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

:robot: Release is at https://github.com/nodeshift/faas-js-runtime/releases/tag/v2.1.2 :sunflower:


Get Unknow function name when profiling Node.js application in Visual Studio 2015

Expected Behavior:
Get all function name in profiling report with their profiling data.
Actual Behavior:
All function names show as Unknown,

NTVS Version: Both 1.2 and 1.1
Visual Studio Version:  Both Visual Studio 2015 and Visual Studio 2013
Node.js Version: 6.9.4

Steps to Reproduce
Base on following document steps.
https://github.com/Microsoft/nodejstools/wiki/Profiling

The profiler is particularly problematic currently in the way it is written, and was written back before Node.js was available as a 64-bit runtime. I have spent considerable time trying to get all the issues fixed with the latest Node.js releases, with little luck. It's going to need a major re-write, and may be removed in the meantime.
If you can profile using an older 32-bit version of Node.js you should have more luck. Sorry I can't offer a better solution currently.

We're no longer supporting the Node debugger for VS 2017. We may in the future, but closing for now.


Correctly format lat, lng and radius parameters when server is not english configured.

in a not english server, the String.format can encode the double with a
fractional separator other than . (dot).
In French, for example, it's  a coma (,).
So I just used String.valueOf() method to correctly encode the double values always with a dot separator.

Merge reverted because this caused tests to fail.

Tests fails even before my changes.
I made another pull request including the patching of the tests : https://github.com/windy1/google-places-api-java/pull/52


feat: speed up fallback translations plugin

PR Checklist
PR Structure

[x] This PR has reasonably narrow scope (if not, break it down into smaller
PRs).
[x] This PR avoids mixing refactoring changes with feature changes (split into
two PRs otherwise).
[x] This PR's title starts is concise and descriptive.

Thoroughness

[x] This PR adds tests for the most critical parts of the new functionality or
fixes.
[x] I've updated any docs, .md files, etc… affected by this change.

What
Speed up the fallback translations plugin.
deep_merge code extracted from i18n-js v3.
Why
Current versions with Glob became too slow on large localization files.
For our use case (20 locales, 20000 keys each), I wait ~20 minutes and kill the process.
deep_merge versions from v3 works instantly. So, I have extracted the deep_merge from v3 into v4.
Known limitations
N/A

This is great. Thank you! I did just a few synthetic tests with no more than a hundred translations and it's okay, but your real use case caught the performance introduced by glob (i'm pretty sure there's an opportunity for optimization there).

@oleksii-leonov just pushed to your repo with some changes related to uncovered code (just to make sure those mergers were working as expected).


feat: add kong-ingress-controller-image flag

This PR adds kong-ingress-controller-image that sets the ingress controller image used for deployment.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

I've tested that manually. I'll take a look at the integration tests and see what can be done.

I've tested that manually. I'll take a look at the integration tests and see what can be done.

Sounds good :+1:
This test is pretty straightforward and shows the basic workflow of setting up addons (in your case, adding a builder option for the image version), building the environment, and then testing to make sure things are working as expected: https://github.com/Kong/kubernetes-testing-framework/blob/main/test/integration/metallb_test.go#L21

BTW: in configureKongAddon() we're checking the kong-disable-controller flag. Wouldn't it make more sense to make setting the image conditional on this flag being unset?

It makes sense. Just I tried to make it same as setting proxyImage, which does not check for the ingressControllerDisabled flag. In the end I don't think  that matters, because if ingressControllerDisabled the controller will not be enabled.
Setting the proxy image was not tested too. I'm adding tests for both options.


⚠ Bofrost.lu has degraded performance

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

HTTP code: 200
Response time: 1184 ms

Resolved: Bofrost.lu performance has improved in 864a088 after 16 minutes.


[vcpkg_cmake_config_test] Add function to test the exported cmake configurations

This function will replace vcpkg_test_cmake, have the following features:
Usage:
vcpkg_cmake_config_test(
    USAGE        Curl CONFIG
    TARGET_NAMES CURL::libcurl
    HEADERS      curl/curl.h
    FUNCTIONS    curl_global_init
)

[x] Use vcpkg tool chain
[x] Obtain targets automatically
[x] Automatically disabled in non-debug mode
[x] Check all targets
[x] Check the header file path
[x] Check function export

To test the header file path and function symbols, we can create vcpkg-test.cpp/vcpkg-test.c in PORT_DIR and add test code to it. Example:
vcpkg-test.cpp:
#include <stdio.h>
#include <curl/curl.h>

int main()
{
    return curl_global_init();
}

For further testing of cmake export variables, we can also create vcpkg-test.cmake in PORT_DIR and write test cmake code.
For exmaple:
Add vcpkg_cmake_config_test() to ports/cjson/portfile.cmake, install cjson with --debug, the expected error will shows (known bug):
Make Error at installed/x64-windows/share/vcpkg-cmake-config/vcpkg_cmake_config_test.cmake:167 (message):
    Test cmake configuration failed, please check cmake configuration file!
    Error code: 1
    See logs for more information:
        G:/15173/vcpkg/buildtrees/cjson/config-test-cmake-debug-out.log
        G:/15173/vcpkg/buildtrees/cjson/config-test-cmake-debug-err.log

log details:
CMake Error at G:/15173/vcpkg/packages/cjson_x86-windows/share/cjson/cjson.cmake:68 (message):
  The imported target "cjson" references the file

     "/debug/lib/cjson.lib"

  but this file does not exist.  Possible reasons include:

  * The file was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and contained

     "G:/15173/vcpkg/packages/cjson_x86-windows/share/cjson/cjson.cmake"

  but not all the files it references.

Call Stack (most recent call first):
  G:/15173/vcpkg/packages/cjson_x86-windows/share/cjson/cJSONConfig.cmake:14 (include)
  G:/15173/vcpkg/scripts/buildsystems/vcpkg.cmake:788 (_find_package)
  CMakeLists.txt:4 (find_package)

@BillyONeal  @strega-nil Any suggestions are good.

I do like this feature a lot. I'm not sure what suggestions you're looking for?

@strega-nil I think this type of testing should only be carried out in two situations:

editable mode
CI mode

Most post checks should follow this policy, because for users, they have been tested in the PRs before being merged into the master, so there is no need to waste more time.

Close this PR temporary.

/azp run

Will this be move to a new port, or merged into an existing vcpkg-cmake... port? I suppose it would also shorten CI runs to not touch ports.cmake.

@strega-nil  I think all the ports whose called vcpkg_fixup_cmake_targets or vcpkg_cmake_config_fixup should automaticly call this function. What do you think about?

@dg0yt No errors.
This function will only automatically detect the generated cmake configuration file, and cannot identify the content in the usage and test it.

@JackBoosY please make sure that these files are in line with the script guidelines

I experiment with a modified variant of this PR which also covers testing CMake Find modules (eventually replacing the cmake-user test port). I think I can turn this into a proper PR in the next days.
With regard to control over enabling certain tests, I would suggest to use a directory like share/vcpkg-tests/enabled/. Tests might be enabled by manual install commands on the maintainer's workstation (interactive), or by directly copying files from vcpkg repo to the installed tree on CI systems (non-interactively). This avoids build time impact on normal users (e.g. for testing with CMake 3.4), and it also decouples user artifacts from rebuilds due to test improvements. And no change to the tool binary is needed.

In favor of https://github.com/microsoft/vcpkg/pull/22258.


Images size is too high

I was trying to use the base images from here to run Azure functions in AKS as per https://docs.microsoft.com/en-us/azure/azure-functions/functions-kubernetes-keda. But, the image size is too big for a container to run in AKS and  not within the usual Microsoft recommended size (usually 500 MB) . Can the images be optimised/ minimised to have smaller size production suitable images?
mcr.microsoft.com/azure-functions/node          3.0-node12-slim     e9b3caa41813        5 days ago          689MB
mcr.microsoft.com/azure-functions/node          3.0                 e76a3b5bc828        5 days ago          959MB
mcr.microsoft.com/azure-functions/node          2.0-node12          115da2d8d28e        2 months ago        600MB
mcr.microsoft.com/azure-functions/node          2.0                 1460b85a9170        2 months ago        588MB

Most of that is just the functions runtime + the framework used. For example the breakdown of mcr.microsoft.com/azure-functions/node:3.0-node12-slim is

Component
Size

Base OS
69 MB

.NET Core deps
41 MB

node 12
152 MB

Functions runtime
577 MB

mcr.microsoft.com/azure-functions/node:3.0-node12 has an extra 275 MBs for additional dependencies like chrome-headless.

We had to choose other alternatives to avoid this. But it would be good to optimise this if there is a way.

This is stil there I am running a Azure function with .NET Core 3.1 and the image size is like 890MB and the main size is coming from mcr.microsoft.com/azure-functions/dotnet:3.0

946M, we managed to get to

News?

Is this right? I feel like im doing something wrong.

Even I am using Azure-funcitons/dotnet:3.0-appservice  and it is making image size around 1.4 GB .anyone knows how to resolve this ??

We're running these images in Kubernetes with keda. 1gb+ for the dotnet image is unreal. Is there no way to trim it down somehow?

Any reaction?
1,2GB is too much (x6 images 7,2GB upload & download 😒)
Is any other option run AZ Function in docker?

A similar situation with python images

azure-functions/node:4-node20 1.75GB
I think this is already beyond any reasonable limits. Each image contains runtime for all versions of functions from 1 to 4... why did you do that? An image, after choosing runtime for function version 4 only, may be 1/3 of the current one.
For some reason the container for Linux function contains a bunch of DLL libraries for windows - what's the point?

Also like @bslpzk, I am using azure-functions/node:4-node20 and almost 2GB comming from the image, for example, below is an image where I have built the function app and copy the files below home. My application 400~ MB, the two folder full of libraries DLL and runtimes almost 200~ GB.

We're using the python:4-python3.8 image for our function images, and by default it is already 2.43GB in size.
This comes from the dotnet SDK in multiple versions (700 MB)

and another 700MB comes from multiple versions of FuncExtensionBundles, which holds libs for various kinds of operating systems and architectures...
# pwd
/FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/4.20.0/bin/runtimes
# ls -1
linux-arm64
linux-x64
osx-x64
unix
win
win-arm
win-arm64
win-x64
win-x86
# file win/**/**/*
win/lib/net6.0/Microsoft.Data.SqlClient.dll:                   PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
win/lib/net6.0/Microsoft.Win32.SystemEvents.dll:               PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
win/lib/net6.0/System.Drawing.Common.dll:                      PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
win/lib/net6.0/System.Runtime.Caching.dll:                     PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
win/lib/net6.0/System.Security.Cryptography.ProtectedData.dll: PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
win/lib/net6.0/System.Windows.Extensions.dll:                  PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
# file osx-x64/**/*
osx-x64/native/libgrpc_csharp_ext.x64.dylib: Mach-O 64-bit x86_64 dynamically linked shared library, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|WEAK_DEFINES|BINDS_TO_WEAK|NO_REEXPORTED_DYLIBS|HAS_TLV_DESCRIPTORS>
osx-x64/native/librdkafka.dylib:             Mach-O 64-bit x86_64 dynamically linked shared library, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|NO_REEXPORTED_DYLIBS|HAS_TLV_DESCRIPTORS>
#

Expanding @bslpzk's question:

why are there windows and mac files at all?
why are there multiple versions of the SDK?
why are there different architectures of the SDK?

@falwickster  check this issue https://github.com/Azure/azure-functions-docker/issues/820
for python there is a slim version


Fix Prezto module loading order

I found a relatively simple and succinct way to fix the module loading order problem.
Note that this will only work if zgen prezto is first in the list of commands, but if people put other modules first they are probably asking for trouble anyway.
Another issue is that I don't particularly like matching on the specific string 'prezto-master/init.zsh', but that seems unlikely to change, and if it does its a simple fix to change it to the correct name.
This does fix the module loading order problem by making sure all prezto modules are loaded before any other plugins that may depend on them, without overwriting functions and aliases set in other plugins.

Thanks for the fix. This fixed issues where prezto default modules were overwriting my other plugins!


Refactor Alembic Model Imports and Create Base Router for FastAPI

This pull request improves the way models are imported in the alembic/env.py file by using a wildcard import from the api.v1.models package. Additionally, it introduces a base router for the FastAPI app, with a prefix of /api/v1, which will consolidate all endpoint routers.

Related Issue (https://github.com/hngprojects/hng_boilerplate_python_fastapi_web/issues/152)

Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to change)

[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

@Armolas Did you test the application to make sure there's no circular import and all endpoints currently registered are not returning a 404 Not Found

@Dev-wonderful Yes, it works without circular import errors


Cannot write deploy-sd properly to SD Card

Trying balenaEtcher or Rpi Etcher, both produced errors about unable to read the SD card when the flashing is complete.  The operation still reports successful in the flashing app.  When trying to boot a Rpi 4 with the SD Card, you get Boot Loader Image errors saying "Boot Image Header is Incorrect"  I flashed the card with the Rpi OS and it worked fine, so it's not my MacOS desktop or the SD Card.  I also tried a different MacOS and same issue happens there.

Please use the issue tracker/discussion board https://github.com/tesla-android/issue-tracker


memory leak

I haven't used any profiler, just watched RAM going up steadily when the program is running.
ver 0.0.6
OS : Microsoft Win 10 Home ,  10.0.18362 Build 18362
system x64

Thanks for the report!
There was a memory leak caused by Matplotlib. Fixed it.


Image does not display when width / height are set to auto

if a height is given, add height=123 and if no height is given, the parameter must be dropped.
same for width
restrict user input to 0 <= x <= 4096

For backwards compatibility the API supports =auto

Image worker URL: possible parameters with available values

format: String possible values: png,mp4,jpg,jpeg,gif,webp
height: Int possible values 0 < X <= 4096
width: Int possible values 0 < X <= 4096

If not available, the parameter needs to be dropped. We added backwards compatibility for auto and I ll do the same if the width | height is bigger than 4096. It will then just fallback to 4096. This is so that we do not break current users.

Image worker URL: possible parameters with available values

format: String possible values: png,mp4,jpg,jpeg,gif,webp
height: Int possible values 0 < X <= 4096
width: Int possible values 0 < X <= 4096

If not available, the parameter needs to be dropped. We added backwards compatibility for auto and I ll do the same if the width | height is bigger than 4096. It will then just fallback to 4096. This is so that we do not break current users.


Support NPN protocol for android.

The NPN protocol is not supported in OkHttp, however, there are still quite a few servers live with it.
And Google Play Service has already provided support to NPN on Android. And the adoption of Google Play Service in Android world is pretty high (except devices from China), meaning it could benefit a lot users.
So, this change is to support NPN support by using ProviderInstaller.

We dropped NPN a long time ago in favor of ALPN.

NPN is completely obsolete.
https://bugs.chromium.org/p/chromium/issues/detail?id=587472

@duanbo1983 sounds like we should have a meeting with some of our backend folks...


Added strMonth2Int and tested it

This var is used to convert String month to Int.
e.g. "Aug". strMonth2Int! will equal to 8

Thanks again, but we really need to discuss new features in order to make sure they are in alignment with what the library offers. In this case, for example, I don't think the library should cover the string conversions. If the user wants to convert dates to strings, they can use NSDateFormatter, NSDateComponentsFormatter, NSLocale, and so on...


Fix a couple of issues with generating cloud-init data

This PR fixes two issues with generating the cloud-init data:

cloud-init seems to need a MIME-Version header set in the multipart message. Otherwise it will raise an error like:

2020-07-31 14:37:17,200 - init.py[WARNING]: Unhandled non-multipart (text/x-not-multipart) userdata: 'b'Content-Type: multipart/'...'

The generated meta-data file should be written as YAML.

Committed to https://github.com/hashicorp/vagrant/pull/11773.


Update: Daum.PotPlayer v210729

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.0 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

The added a weird dash in their PackageName...


Fixed a bug with installing plugins

Due to the new package-lock.json file generated by NPM 5, new plugins will not be installed automatically anymore. This commit adds --no-shrinkwrap to the npm install command to make sure the contents of package-lock.json are ignored, causing all dependencies listed in package.json to be installed correctly.
The parameter --no-shrinkwrap is also available in earlier versions of NPM, so no backwards compatibility issues should arise from this change.

Oh so that is why it fails, nice find!

Hi!
Is there a release planned with this fix in? Would be very nice to have it available soon!
Thanks!

Sorry for the really noob question but where do I put this in? I'm using the Windows Installer.


[deps] Add webrick to dependency list

Ruby 3.0 doesn't bundle the webrick gem any more.
Ref: https://github.com/jekyll/jekyll/issues/8523

Doesn't seem to impact older rubies. Merging


Use parameterized Statements for Postgres export

Required Functionality
Currently, the postgres export statements are build as strings. See postgres.sql:91 and following.
Proposed Solution
Make it use a prepared statement instead. This requires implementing ToSql on our Value implementation and creating a function that builds the SQL statement from a given list of columns for the namespace.
Use case
Not only will this make the export faster by removing the Value → String → Value roundtrip, it will also reduce the avenues for errors because of failing to escape data (if someone manages to generate bobby tables).

Hey! I believe I can work on this. I'm just not quite sure I understand about ToSql. Is it a trait from another library? One to be implemented in Synth itself?

postgres has an implementation of ToSql  that may be enabled by including it in the features list. With that, do we still need to re-implement ToSql?

In the lossless sampling PR, we switch to sqlx, along with implementing it's Type and Encode traits. Yesterday I split out the export half of the PR so it's easier to review. Expect it to be merged next week.


Feature: Spatial Aggregate Functions

It would be particularly helpful to implement spatial aggregate functions that are an aggregate variant of duckdb spatial supported geometry construction functions. Here are examples outlined by PostGIS: https://postgis.net/docs/PostGIS_Special_Functions_Index.html#PostGIS_Aggregate_Functions. Also consideration for an aggregate variant of St_Intersection, which is not implemented in PostGIS.

Hi!
Thanks for the suggestion. There are some remnants of some old implementations of e.g st_union in the code already, but there's two issues why I hesitated to go further with them.

DuckDB cannot overload aggregates and scalars on name yet, so we would have to break standards and call them e.g. st_union_agg or st_kmeans_agg. We could of course add an alias in the future, so this is not really a big problem.
When I tested them they turned out to be very slow, since we don't have spatial indexes and can't do any efficient pruning yet.

DuckDB's aggregate code in general is pretty complicated since we need to be able to aggregate out-of-core, which limits flexibility in implementing new aggregates. But this is something we're aware of and are looking into.
Thanks for the suggestion on ST_Intersection as well. I'll see if I can get some "naive" aggregate implementations in next release.


workflow reviews

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

v4.0.1
GitHub release

Your semantic-release bot :package::rocket:


[feature] Filter active tasks: Assigned to me

Partially solves #20.
I've made a boolean setting for only showing tasks that are assigned to the current player in the Active task button. I made it a separate option for the sake of extensibility, in case there will be more filtering options in the future.
Also added some order values to settings, hope you don't mind (otherwise the order seemed very random)

Oh, and we still need to add translations for every language except EN and RU, not sure what the proper flow for that is.

Looks good, thanks!


auth: add a random challenge

For context, the KBFS-side of this change is here: https://github.com/keybase/kbfs/pull/623. The change to serverutil/session.go is directly relevant.

Small thing, LGTM otherwise!

Merged w/https://github.com/keybase/client/commit/b8c0b17d998d7ee003db85d25658638769c99219


Sleep detection and visualization

tbd

@stwerm For this topic we weren't quite sure anymore what we decided on. We discussed two options:

Sleeping time is automatically detected and visualised based on the first and the last entry entered per day.
The sleeping time can be entered manually for the whole week, before entering calendar entries. (Exceptions are always allowed)

What would be the preferred option?


dotnet test CLI ref updates

Fixes #17256
Fixes #17135

@nohwnd please review

@tdykstra @jakubch1 would be a better person to review this, because he is focusing on code coverage.
@jakubch1 please review this.

@jakubch1 @nohwnd Thanks for review!


WIP: V2 NonFungibleToken Standard

Adds the v2 fungible token standard, as described in this forum post: https://forum.onflow.org/t/streamlined-token-standards-proposal/3075/37
I included many of the comments and suggestions from the Fungible Token version into this, so we're hopefully starting from a better place
A few highlights:

Turns NonFungibleToken into a contract instead of a contract interface
Introduces a new contract interface (NonFungibleTokenInterface) with event specifications, functions to get the NFT and collection types that the contract implements, and functions to get important metadata views for the types in the contract. This will help external parties learn about which types a contract implements since contracts can implement multiple collection and NFT types now.
Adds a Transferable interface to include a transfer function
Adds getAcceptedTypes() to the Receiver interface so a receiver interface can indicate which NFT types it accepts.
Moves standard paths inside the collection object definition because they are specific to the actual collection instead of the contract now.
Adds type parameters to the all the events since contracts can have multiple nft types defined
Adds a type parameter to the createEmptyCollection method

The contract currently has a couple errors that should be able to be resolved easily, such as it not working properly with the createEmptyCollectionFunction field of the NFTCollectionData metadata view, and the ownedNFTs field not conforming to the resource interface's field, but there are no other errors.
I am looking for feedback on the initial proposal. Tests will come later
There are probably more things that I am missing, but most of the details are in the forum post, so that is another good resource.

Very good and much better than the current standard. I left few minor comments.

Hi,
I was just wondering whether this could also be considered / added: https://github.com/onflow/flow-nft/issues/123
Perhaps an optional medias field would be nice to support a wider variety of NFTs such as videos, music, or multiple images, etc. The current structure is limited in supporting just one thumbnail image, but some platforms/marketplaces may wish to display videos / music players or multiple images in a carousel instead.

@bymi15 That is a separate workstream that is unrelated to this standard update. I'll respond to your issue. Thank you!

What do we think about adding a batch deposit, batch transfer, and batch withdraw? Is that worth adding?

I saw in mail that austin commented on the transfer discussion that has been marked as resolved. Just a heads up that there might be new comments in resolved discussions.

@bjartek @bluesign @austinkline and anyone else who can give feedback. Quick question about how this should be structured. Right now, I have it so that all the resource interfaces are in a contract (FungibleToken) and I have a separate contract interface (NonFungibleToken-v2) that requires the standard events and some utility functions to return the types defined by the contract and some standard views. @alilloig made the suggestion that those could be just moved into FungibleToken and make it a contract interface like it currently is, then any utility functions with implementations like verifyCollectionTypes() like we have in there right now can just be moved into a NonFungibleTokenUtilities contract along with other useful things like scoped providers and such. Do you think we should go with Alvaro's suggestion, or stick with what we have now and put those utility functions/scoped providers directly in the token standard contract?

I don't really have any important comments, I love the proposal!! Can't wait to see what people can create using multiple NFTs and FTs on a single contract 🎉

@bjartek @bluesign @austinkline and anyone else who can give feedback. Quick question about how this should be structured. Right now, I have it so that all the resource interfaces are in a contract (FungibleToken) and I have a separate contract interface (NonFungibleToken-v2) that requires the standard events and some utility functions to return the types defined by the contract and some standard views. @alilloig made the suggestion that those could be just moved into FungibleToken and make it a contract interface like it currently is, then any utility functions with implementations like verifyCollectionTypes() like we have in there right now can just be moved into a NonFungibleTokenUtilities contract along with other useful things like scoped providers and such. Do you think we should go with Alvaro's suggestion, or stick with what we have now and put those utility functions/scoped providers directly in the token standard contract?

Just to make sure I understand the question fully, is this mostly around separating the interface from any implementation? Or is there some other reason to split things up? Is there a compute cost to putting them elsewhere to consider as well?

We originally were going to completely remove type specifications in interfaces from the language, which would mean there would be no contract interface at all here and everything would have been contained in the NonFungibleToken contract, but we realized that it is nice to be able to specify the events and such, but that was after we had already put everything in a contract, so now I want to put everything back in the interface.
We still want to have general utility functions and types for token such as verifyCollectionTypes() and scoped providers though, and those can't be in the standard interface because we can't write implementations of those functions in there, so we'd have to have them in a separate utility contract.

Since we do not have a universal collection anymore I honestly do not see the value of beeing able to have multiple NFTs in the same contract. It introduces changes that provide very little value IMHO.
If we could disconnect collections from NFTs it would be a totally different thing for me. But I do not see a concrete example of that beeing possible here. Can i create an NFT in a file that does not have a collection and just add that to another collection?
Also having collections with multiple different nft types is not trivial IMHO. So for me the benefit does not justify the cost here.

        pub fun getAcceptedTypes(): {Type: Bool} {             return {                 Type<@ExampleNFT.NFT>(): true             }         }
Is there a reason not to hold the accepted types in an array in the Collection, instead of coded into this function?  That way an append mechanism could allow new types to be added.  Or deleted, but that would depend on whether the collection actually held any of the type being deleted.

@hier01 We're trying to make it so we can upgrade the existing standard to this one, and adding fields to existing types is not supported in upgrades, so we can't require that. If a project is still deploying a completely new NFT or collection, they are welcome to include that field in their collection though, even though it isn't required by the standard

@joshuahannan I was talking with @bjartek about a FLIP idea I'm working on, I think it'll be useful share it here with all you.
@hichana @gpfurlaneto and me were discussing about how solve the path conflicts, the first idea we had was implementing a path registry like this where all new smart contract would registry the path into the init function, example image below.  Contract type would be concat with the path name creating an unique path for each new smart contract.
It will create a centralized resource to handle all paths, using it to register new paths and consume paths. It can be used to improve the developer experience by a vscode plugin showing if the path is available even before deployment.
Please let me know your thoughts about it :)

@Peixer I think that standardization for paths is a great idea. I like the idea of your registry and correct me if I am wrong, but it looks like yours would only be for NFT contracts since it has the collection path paradigm built in? I think it would be better to make it more generalized. Can that be part of your FLIP?

@joshuahannan yeah, initially we thought about having this feature for collections. Not sure if I understood your point, make it more generalized would be a static function where anyone can create new paths using the standard?
In the first draft we added a dictionary using the NFT contract type as a key, we would need to think about how to cover this part to be more generalized. Or maybe a contract registry could be made where the focus is on centralized contract information. How do you feel about this last part?

how much will be to register a path ?

Why registry I didn't understand that that part?
Now we say path P is:  P = Concat(contractType, path name); contractType we have access from the object, path name object can expose itself (via metadata, or simple standard interface)
As we add contractType already, I don't think we need registry. A central registry would be a single point of failure, meaning that if it is compromised, the entire system could be at risk.

I talked with @Peixer and he is going to make a FLIP for his paths proposal so we can concentrate discussion for that there and keep this focused on the standards

For now, I also split the NFT metadata views out from the core metadata views contract so I could deploy everything and make sure it all works properly and typechecks. Ideally, we could actually have the metadata views split out like this, but idk if that will be possible.

I think extracting resolver interfaces are cleaner. With interfaces conforming to interfaces ( if we will have ) it will be backwards compatible (I guess)

Thanks for the feedback @bluesign! I did move the standard views back into MetadataViews and moved the Resolver and ResolverCollection interfaces into the ViewResolver contract.
I also just pushed some more changes to use events in interfaces and I changed the standard to just be a contract and not an interface. I'm curious to hear if anyone has any feedback! I have a few things I want to discuss at the next breakout, so I'll start planning an agenda and scheduling the next breakout

Have we spoken about an event when something is Burned? At the moment is basically impossible to distinguish a Withdraw that escrow the resource elsewhere and a burn if you do not know what other event to look for.

@bjartek yep, it is in both proposals already: https://github.com/onflow/flow-nft/pull/126/files#diff-0aa93a6098e86167b39c0a5202f7cbdc953e8bd7ee949b594c2d2695b67372a8R120-R125

Just want to leave a note here that it might not be a good idea to include this default implementation because existing projects who upgrade might forget to include it and if they do and are using a different ID system, they would start returning uuid instead which could cause some problems.
It is nice to have for new projects though because they wouldn't even have to implement it, reducing the number of lines of code they have to write, but that might not be worth the risk.
Anyone else have any thoughts? I'm not fully decided yet.

There are two things i would like to discuss to be added to the standard.

an event that is emitted like the others when an NFT is updated without a movement event. For doodles we use DoodleUpdated. This is very useful for indexer that wants to make a cache of nfts offchain.

A way to get attached/sub-nfts in a standard way for any nft. Personally i think it is overkill to say that an NFT can have an entire new NFTCollection but that is an option. Another options is some simple methods that are defaulty implemented to empty that says what sub-nfts you have (type and ids) and another method to get an sub-nft using type and id.

I know there is uuid but it is currently not emited in any old events and there are conflicts in them. Personally I think just these two methods would be enough.

I totally agree with @bjartek about the need for those events, so that the real state of an NFT can be tracked properly. A Flovatar wearing an epic accessory for example is much more worth than without it, and it's important that people have a way to keep track of any change on the NFT.

Good suggestions! For the first one, I think that would be nice, but since we don't have nested type requirements any more, we can't enforce that certain events are included and still can't enforce that they are emitted properly. How would you propose we implement that and enforce that people use it properly?
For the second suggestion, that sounds like a metadata view, which we already have an open issue for. I'm not sure that it should be part of the standard.
For both, if you'd like to include them, please make a PR or a comment with your suggestion! Y'all know much better about what you need than I do, so it would save a lot of back and forth if y'all made the proposal first and we can iterate on that. We also are going to discuss the new standards again at the smart contract open house on tuesday next week if we want to discuss it there too, but it would really help if we had your concrete proposal to discuss instead of just an idea.

For the second suggestion, that sounds like a metadata view, which we already have https://github.com/onflow/flow-nft/issues/146 for. I'm not sure that it should be part of the standard.

Part of this can not be a view, what can be a view is exposing that you have sub-items and what ids you have. However for the borrowing of an sub-nft it would be most flexible if there was a method defaultly implmented as empty that allowed you to borrowSubResource(type:Type, id:UInt64) or something like that. I will make PR.

I added a PR targeted to this branch with the update event.

@sisyphusSmiling had a point in flow discord today about how do we now initialize an NFT collection. There is an pattern currently where you can borrow a NFT contract address and get its collectionData and then initialize. In the new v2 ExampleNFT the contract does implement ViewResolver that gives the same, but there is no enforcement of this. And Personally i would very much like there to be enforcement of this.
So I guess i then question the move from a contract interface to a contract. Are there going to be an practical use of having multiple NFTs in a contract? In my eyes I do not think that the gains are worth the cost here.

To follow up for anyone watching, we decided to change both standards back to interfaces. Summary of the discussion can be found in the FLIP

We finalized the design of the standards at our last working group meeting and this PR has been updated with the intended final implementations of NonFungibleToken, ViewResolver, and MetadataViews.
Anyone who is interested is welcome to take a look and leave any feedback or questions they want, but any fundamental changes to the standards will likely not be actioned unless the need is very strong because developers need to have a stable set of standards to work on their Cadence 1.0 upgrades with.
The other contracts are all either examples or utility contracts, so those designs aren't finalized yet. The tests and transactions also have not fully been updated yet, but will be in the coming weeks.
Thank you to everyone who contributed to the designs! We couldn't have done it without you. 😃

I just marked this PR as ready for review! There are still some tests that need to be added, but I consider most of the code to be ready! I'm welcome to hear any feedback about any of the choices in the example contracts and transactions so we can make sure we can set a good example for Cadence 1.0!

@joshuahannan Awesome! Maybe the PR title can be updated now? Is flow-go already updated to this?

@turbolent Good suggestion! I updated the PR titles. This was also included in my PR that got merged to the flow-go feature branch. Same with the latest flow-core-contracts

Looking for reviews on the standard code changes here if anyone has time! I'd like to get this merged soon! 😃

@nvdtf I addressed all your review comments and made almost all of the changes you suggested. Let me know if you have any other comments! Thank you so much for the review! :)

With Collection.ownedNFTs no longer being standard (or really even accessible), there needs to be an efficient and standard way to loop through all owned NFT IDs in a collection. Calling Collection.getIDs() has increasingly common compute limit issues for large collections.
We currently rely on collection.ownedNFTs.forEachKey heavily in our production scripts to iterate through all NFT IDs in a collection in an efficient way.
My suggestion is to add the following to the CollectionPublic standard interface:
access(all) fun forEachID(_ f: fun (UInt64): Bool): Void
implementation would look like this for legacy contracts (or really however the developer sees fit)
access(all) resource Collection: NonFungibleToken.Collection {

      access(all) fun forEachID(_ f: fun (UInt64): Bool): Void {

          self.ownedNFTs.forEachKey(f)
      }

      ...
}

Thanks for the comment @cody-evaluate! I'll update the getLength implementation in ExampleNFT.
I agree that what you are asking for would be very nice to have and if it wasn't so late in the process, I would put it in with no hesitation so that every project would have to implement it. As I said in Discord, we've promised to the community that we won't introduce any more breaking changes to the standard, which this would be because it would require that people implement it. We could put it in there with a default implementation though, which would not break any contracts that have already been updated. The downside though is that since there is a default implementation, contracts don't have to implement the function, meaning that there is no guarantee that every NFT has a proper implementation of this method. Is that okay?

@joshuahannan its better than nothing i guess but this should really be required and even though its late, we are still in the staging period so theres really no other time to do something like this. The biggest issue is this removes a necessary piece of functionality that has existed in production since the beginning with no replacement currently.

I understand, but we had no idea that anyone was actually using ownedNFTs for anything, so removing it did not seem like any problem to us and we didn't hear any feedback about this in the year+ that we were working on the new standard until now. I'll see what I can do

this would be an example use case in a script
import NonFungibleToken from 0x1d7e57aa55817448

pub fun main(ownerAddress: Address): [&{NonFungibleToken.INFT}] {

    let limit = 10

    let response: [&{NonFungibleToken.INFT}] = []

    let account = getAuthAccount(ownerAddress)

    account.forEachStored(fun (path: StoragePath, type: Type): Bool {

        if (!type.isSubtype(of: Type<@NonFungibleToken.Collection>())) {

            return true
        }

        let storageCollection = account.borrow<&NonFungibleToken.Collection>(from: path)!

        storageCollection.ownedNFTs.forEachKey(fun (nftId: UInt64): Bool {

            let nft = storageCollection.borrowNFT(id: nftId)

            response.append(nft)

            return response.length < limit
        })

        return response.length < limit
    })

    return response
}

here is a working example of getting the NFT ID at index 150000 on a massive collection
// you cant even get index 0 in this example because arrays are value types in cadence
import NonFungibleToken from 0x1d7e57aa55817448

pub fun main(): UInt64 {

	let index = 150000

	let account = getAuthAccount(0x1e3c78c6d580273b)

	let storageCollection = account.borrow<&NonFungibleToken.Collection>(from: /storage/LNVCTCollection)!

	// compute limit
	return storageCollection.getIDs()[index]
}

this works for the same collection
import NonFungibleToken from 0x1d7e57aa55817448

pub fun main(): UInt64? {

	let limit = 150000

	let account = getAuthAccount(0x1e3c78c6d580273b)

	var index = 0

	var response: UInt64? = nil

	let storageCollection = account.borrow<&NonFungibleToken.Collection>(from: /storage/LNVCTCollection)!

	storageCollection.ownedNFTs.forEachKey(fun (nftId: UInt64): Bool {

		response = nftId

		index = index + 1

		return index < limit
	})

	return response
}

I think that it is time to merge this to master! If nobody has any issues with me merging this, I'll merge it on Monday next week. I'm going to create a branch that is based off current master so that we still have a record of the cadence 0.42 versions of the contracts.

Amazing work everyone! 👏


test[cartesian]: Unskip blocked DaCe tests after DaCe upgrade

Description
A couple of tests were skipped in the DaCe backend with issue https://github.com/GridTools/gt4py/issues/1084 because they were throwing compiler errors. Current versions of DaCe can handle these cases again. Re-enabling the test cases. CI confirms (so far) that there aren't any issues anymore.
/cc @FlorianDeconinck as discussed.
Requirements

[x] All fixes and/or new features come with corresponding tests.
[ ] Important design decisions have been documented in the approriate ADR inside the docs/development/ADRs/ folder.

@egparedes can you run CSCS-CI for us? Thanks!

@twicki please review


[Bug] Broken in Atom 1.20

With all new updates in the language-php package it seems the colours in PHP doesn't match the colours on GitHub. Atom on the right and GitHub on the left:

List of syntax colours that doesn't match:

DocBlocks
Properties
Variables
Methods

I'm running Atom version 1.20.1 with github-atom-light-syntax version 0.5.0.
Maybe @50Wliu knows more about this issue?

Oh hey.  Looks like GitHub is using php.tmbundle, not language-php.  Maybe you could file an issue on linguist/linguist and see if they're willing to change grammar sources.

Thanks for getting back. Is the github/linguist used in Atom at all?

No, Atom uses its own grammar tokenizer, first-mate, based on oniguruma.
(Thanks for subtly pointing out my repo typo by the way!)

(Thanks for subtly pointing out my repo typo by the way!)

Haha, didn’t think it was necessary to point out.

Closing this due to inactivity.


chore: Variety of tweaks to the shell and phase infrastructure.

This pulls in the shell/session/etc tweaks that are in https://github.com/mitre/hipcheck/pull/212 without pulling in the git2-based source clone/pull code.

Just needs to be squashed to one commit! Otherwise LGTM

Squashed!


NetworkTarget - Improve test-coverage for QueuedNetworkSender

Improve missing code-coverage detected by #4772

Looks the tests is still unstable:
https://ci.appveyor.com/project/nlog/nlog/builds/42333520/job/p23asr373l281lg9
  Failed NLog.UnitTests.Targets.NetworkTargetTests.NetworkTargetQueueDiscardTest [14 ms]
  Error Message:
   Network write not starting: 1
Expected: True
Actual:   False
  Stack Trace:
     at NLog.UnitTests.Targets.NetworkTargetTests.NetworkTargetQueueDiscardTest() in C:\projects\nlog\tests\NLog.UnitTests\Targets\NetworkTargetTests.cs:line 849


Feature Requests for Obsidian Plugin(save lots of tokens)

request the following features to be added to the Obsidian plugin:

A switch to control the number of context items associated with a conversation.
A conversation compression feature that sends only a summary of the conversation.
A conversation compression threshold feature that automatically compresses conversations when the number of compressed messages exceeds a certain threshold. The threshold can be set in token or character count.
Support for additional parameter settings.

Feature 1 will reduce the number of tokens used in chat conversations. Feature 2 will significantly reduce the number of tokens used in conversations.
The website https://hk.ai001.live already uses these three technologies.
Thank you for considering those feature requests.


An error occurred when I query the database

My Code:
auto influxdb = influxdb::InfluxDBFactory::Get("http://localhost:8086/?db=test");
std::vector<influxdb::Point> points = influxdb->query("SELECT * FROM test");
cout << points.size() << endl;

And this is the structure of measurement "test":
select *from test
name: test
time                host      value
----                ----      -----
1583938657323591874 localhost 10
1583938681385599260 localhost 10

Error message：
g++ QueryTest.cc -o QueryTest -std=c++17 -lInfluxDB
./QueryTest

terminate called after throwing an instance of '
boost::wrapexcept<boost::property_tree::json_parser::json_parser_error>' what():  <unspecified file>(1): garbage after data
Aborted (core dumped)

This is my environment:
gcc 7.3
boost 1.72.0
curl 7.69.1

What should I do to solve this problem, thanks.

Sorry missed that, I'll take a look tomorrow!

Are you sure your database name is test as well? Because you only showed that your measurement name = test.
Could you also try running ./bin/testQuery and lemme know what the output is?

Are you sure your database name is test as well? Because you only showed that your measurement name = test.
Could you also try running ./bin/testQuery and lemme know what the output is?

Yes, the database is 'test'.
The results of QueryTest are as follows:
root@ubuntu:/home/SourceCode/influxdb-cxx/build/bin# ls
benchmark  testFactory  testHttp  testPoint  testQuery  testUdp

root@ubuntu:/home/SourceCode/influxdb-cxx/build/bin# ./testQuery
Running 1 test case...
unknown location(0): fatal error: in "query1": std::logic_error: basic_string::_M_construct null not valid
/home/SourceCode/influxdb-cxx/test/testQuery.cxx(18): last checkpoint

*** 1 failure is detected in the test module "Test InfluxDB Query"

Thanks :-)

Could you try with v0.5.0 ?

Could you try with v0.5.0 ?

I have sent a mail to your mailbox, please check it.


When using version PDFSharp 1.50.4545.0 type initializer throws an exception for adapters

Works fine when I revert back to PDFSharp version 1.32.3057. However, as soon as I update to version 1.50 I get type initializer error for:
var pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf("text", PdfSharp.PageSize.A4);
The error says "adapters are obsolete and not implemented anymore"

I also get this issue when using the HTMLRenderer. I will try reverting to PDFSharp version 1.32.3057 to see if I can work around this issue.

HtmlRenderer 1.51 should work with PdfSharp 1.50. When I say "should" I mean I am actively using it without those errors. If you really want help, post the full exception information showing the stack trace.

I'm getting a similar error. Here is the stack trace:

[InvalidOperationException: Obsolete and not implemted any more.]
PdfSharp.Drawing.XFontFamily.get_Families() +46
TheArtOfDev.HtmlRenderer.PdfSharp.Adapters.PdfSharpAdapter..ctor() in d:\source\github\HTML-Renderer\Source\HtmlRenderer.PdfSharp\Adapters\PdfSharpAdapter.cs:44
TheArtOfDev.HtmlRenderer.PdfSharp.Adapters.PdfSharpAdapter..cctor() in d:\source\github\HTML-Renderer\Source\HtmlRenderer.PdfSharp\Adapters\PdfSharpAdapter.cs:33
[TypeInitializationException: The type initializer for 'TheArtOfDev.HtmlRenderer.PdfSharp.Adapters.PdfSharpAdapter' threw an exception.]
TheArtOfDev.HtmlRenderer.PdfSharp.Adapters.PdfSharpAdapter.get_Instance() in d:\source\github\HTML-Renderer\Source\HtmlRenderer.PdfSharp\Adapters\PdfSharpAdapter.cs:57
TheArtOfDev.HtmlRenderer.PdfSharp.HtmlContainer..ctor() in d:\source\github\HTML-Renderer\Source\HtmlRenderer.PdfSharp\HtmlContainer.cs:43
TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(String html, PdfGenerateConfig config, CssData cssData, EventHandler1 stylesheetLoad, EventHandler1 imageLoad) in d:\source\github\HTML-Renderer\Source\HtmlRenderer.PdfSharp\PdfGenerator.cs:110
Uid.Web.Controllers.d__8.MoveNext() in C:\Users\dansmith\Code\Uid.Web\Controllers\PersonasController.cs:122
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
...

Using ILSpy I can see that version 1.50 of PdfSharp throws an exception on PdfSharp.Drawing.XFontFamily.Families, and has "Use platform API directly" in the method's Obsolete attribute. Version 1.32 has valid code in the property accessor.

I am also getting the same error. Anyone got help or fixed it ?

I reverted back to PDFSharp version 1.32.3057. It is working fine now.

I don't think you guys use using the very latest HtmlRenderer code. <IP_ADDRESS> did not work with PdfSharp 1.50. There was a change made in 2016 to fix the exception in the PdfSharpAdapter constructor.  The code in the constructor should look like this:
    private PdfSharpAdapter()
    {
        AddFontFamilyMapping("monospace", "Courier New");
        AddFontFamilyMapping("Helvetica", "Arial");

        var families = new InstalledFontCollection();

        foreach (var family in families.Families)
        {
            AddFontFamily(new FontFamilyAdapter(new XFontFamily(family.Name)));
        }
    }

Again, you need HtmlRenderer 1.5.1-beta1 or later to use PdfSharp 1.50.  Note the latest PdfSharp, last I checked, was 1.50-beta5.

Would like to upgrade to PdfSharp 1.50, but at the moment I can't because of this issue, and through policy can't update to a beta version.
1.5.1-beta1 has been out for 2.5 years so far - is it possible that any issues will have been shaken out by now and a full release built?
Thanks for the effort in producing this library, it is appreciated, and although it would be nice to see this, I understand it may take time...

Also wondering if this was ever resolved?
It seems reverting back to PDFSharp version 1.32.3057 should work? (I haven't tested this yet, just assuming this was the fix).
Thanks

Hi all,
I resolved this problem just by updating HtmlRenderer.PdfSharp like this:
Install-Package HtmlRenderer.PdfSharp -Version 1.5.1-beta1

I'm having the same problem using the newest versions of both PdfSharp and htmlrenderer..

I'm having the same problem using the newest versions of both PdfSharp(1.50.5147) and HtmlRenderer(<IP_ADDRESS>) using .NET 4.7.2

thanks that was useful

If anyone has this error using this nuget in docker (Linux) then you have this error because PDFSharp uses System.Drawing.Common which works only in Windows. Fortunately there is a solution to this, this comment saved me
https://stackoverflow.com/a/73977430/14332640
In summary you need to install libgdiplus inside docker and add
<RuntimeHostConfigurationOption Include="System.Drawing.EnableUnixSupport" Value="true" /> inside
 <ItemGroup> tags.
inside every .csproj file of solution (one per project).

Still the problem: using the newest versions of PdfSharp(1.50.5147) and HtmlRenderer(<IP_ADDRESS>) using .NET 4.8.0
This failure looks like verry olde one. Any date of fixing?

I'm now running into the same problem, this is open for quite a while, any new news beside downgrading or going to a beta?


Displaying bug in "Analytics" Section after starting Node

Each time after restarting the Node, there is an empty screen when clicking on "Analytics" for the first time. After a refresh everything is fine. This only happens in the "Analytics" Section, the others are fine from the beginning.
Please check it for a fix. Dr. Electron has the same Issue so I think it's a general bug.
Thx!

Today after a new restart of HORNET, every time when I click on "Analytics", there is an empty screen and a refresh needed.

Could you add a screen grab and some additional details like browser, OS etc

MacOS Big Sur (11.1) with Safari Browser (14.0.2)

This was already fixed a few days ago, hornet is linked to an older version of the node-dashboard.


Mongoose Traveller 2e: Make Independent sheet and fixes

Also adds the default Template to skill rolls.
All rolls are now in the template.

I merged this, but it did not add back the skills that were removed previously, so I reverted it and went ahead with using Puppet's PR instead.


Exposing cluster topology and status via frontend http api

What type of enhancement is this?
API improvement
What does the enhancement do?
As mentioned in https://github.com/GreptimeTeam/dashboard/issues/159 , it would be nice to have an overview of cluster status, including:

how many datanodes, frontends and metas in current cluster
their address, load and other usage information
how many clients are connected to current cluster

These information will be reporting to meta via heartbeats, and exposed via frontend HTTP API, say /v1/self/status
Implementation challenges
No response

Is this issue open for community contributor? @sunng87

I think we are approaching an alternative solution for this in #2921 and #2931 . You might be interested in one of those tasks.

I'm closing this because we are going to implement this with sql and table data from information schema.