[6.*] Can not disable CSS URL processing

Laravel Mix Version: 6.0.0-beta.14
Node Version: 14.12.0
NPM Version: 6.14.8
OS: MacOS 10.16.7

Description:
I tried to upgrade from mix 5 to 6-beta, however everytime I try to compile my assets (yarn development), I get the following error:
 ERROR  Failed to compile with 1 errors                                                                                5:55:36 PM

 error  in ./css/likvi.css

Error: Can't resolve '/assets-static/img/template/text-splash.png' in 'root/site/themes/theme/css'

For me it looks like processCssUrls: false is ignored.
Steps To Reproduce:
webpack.mix.js:
const mix = require('laravel-mix')
const webpack = require('webpack')

mix.webpackConfig({
  plugins: [
    new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /de/),
  ]
})

mix.setPublicPath('./dist')
  .postCss('css/likvi.css', 'dist/likvi.css', [
    require('postcss-import'),
    require('tailwindcss')
  ])
  .options({
    processCssUrls: false
  })
  .js(['js/tracking.js'], 'dist/tracking.js')
  .js(['js/likvi.js'], 'dist/likvi.js')
  .js(['js/freelanceup.js'], 'dist/freelanceup.js')
  .js(['js/rate-comparison/index.js'], 'dist/rate-comparison.js')
  .js(['js/savings-calculator/index.js'], 'dist/savings-calculator.js')
  .js(['js/vat-calculator/index.js'], 'dist/vat-calculator.js')
  .js(['js/freelancer-rate-calculator/index.js'], 'dist/freelancer-rate-calculator.js')
  .js(['js/glossary-search/index.js'], 'dist/glossary-search.js')
  .js(['js/tax-advisor-calculator/index.js'], 'dist/tax-advisor-calculator.js')
  .extract(['vue'])
  .copyDirectory('fonts', 'dist/fonts')

My webpack.mix.js file lives in root/site/themes/theme/webpack.mix.js whereas the assets live in root/assets-static/

I am using version 6.beta-17 and the issue persists.

There was an issue with postCss specifically and will be fixed in the next release.


Bring Theme & Language Switchers to Top of Page

Is your feature request related to a problem? Please describe.

The existence of toggles to switch theme & language is not very noticeable for new users.
Describe the solution you'd like

Bring the switchers to the top right of the landing page for easier discoverability & access.
Describe alternatives you've considered

N/A
Additional context

Seems like a good idea.


Building on Ubuntu 21.04: The following tests FAILED: 385 - RegisterStateTest.BackupModifyRestore (Failed)

Hi,
I try to build orbit on Ubuntu 21.04 with ./bootstrap-orbit.sh and it fails at the test stage. I tried version 1.66, but this produced even more test fails than master. The long log for a build with build.sh (after calling and failing with ./bootstrap-orbit.sh) can be found here: https://gist.github.com/othiman/633ffe3bac3485c87f8d20bb4c540803.
What can I do to finish the build?
Best regards,
Thomas

[ RUN      ] RegisterStateTest.BackupModifyRestore
/home/othiman/devel/orbit/src/UserSpaceInstrumentation/RegisterStateTest.cpp:79: Failure
Value of: state.Hasx87DataStored()
  Actual: false
Expected: true

othiman@ you can probably just ignore the failed test. the build is finished.

Oh OK. Thanks for the hint. :-) Feal free to close the issue whenever you like.


get-started: initial refactoring

Closes #747 (dedicated landing page for docs)
Addresses part of #1035 (merge get-started and tutorials sections)

@shcheklein so far this only implements #747 but probably a little hacky – see getItemByPath in src/utils/sidebar.js and SidebarMenu.timeout in src/components/Documentation/SidebarMenu/index.js. Can you guys look at it and lmk what a better way to implement this could be? Cc @fabiosantoscode
Also if this should be a PR of it's own I can separate it from the remaining changes (Get Started related).

Looks good to me! We should spend a bit of time to think about the landing page content (check other projects). Also, see this discussion that is relevant to your changes in the sidebar.json -  https://github.com/iterative/dvc.org/pull/1025#commitcomment-37819121 ... cc @iAdramelk - if we can merge this one before Gatsby migration we might just disallow having any entry w/o index page? But to be honest I would still do redirects if file is missing, and we should be doing this on the middleware level automatically (not relying on sidebar.json).

another point - we need to introduce some special "Home" entry to the sidebar?

[ ] We should spend a bit of time to think about the landing page content (check other projects)

Working on that ⏳

we need to introduce some special "Home" entry to the sidebar?

I don't think so, we have the DOC link in the top menu. But if you prefer that then sure, that wouldn't require the js code changes I did.

if we can merge this one before Gatsby migration

If you want to merge this PR soon, please approve it and I'll limit it to this first step for now.

I don't think so, we have the DOC link in the top menu. But if you prefer that then sure, that wouldn't require the js code changes I did.

yeah, I think it's good to clearly see the structure and being able to return to the page - here is an example https://www.algolia.com/doc/ .... we might even want to use an icon and separate it a bit from the other menu items, etc - need to think a bit about UX

if we can merge this one before Gatsby migration

I would confirm with @iAdramelk first.

think about the landing page content

Updated

I think it's good to clearly see the structure and being able to return to the page

OK, done.

I would confirm with @iAdramelk first.

Well, too late! Haha. I've merged get-started and tutorials into /doc/learn now (so this PR has become big because of all the link renaming). What do you think?

I think it can be very hard to merge both now. I would focus on the content for now, not significant structural changes.

Or at least, we'll need to merge Gatsby migration first and then deal with this here.

we should remove triangle, try to use icon and separate it from other items I think

https://dvc-landing-refactor-ge-nouj86.herokuapp.com/doc/Home - url should be lower case

content for the home page - probably should provide some good entry point and navigation for other sections

also, learn - name is too general now, what is the plan for this section?

we should remove triangle

Extracted to #1053

learn - name is too general now, what is the plan for this section?

"Learn" is a common name for this kind of section with all the guides, tutorials, etc e.g. https://nextjs.org/learn

I addressed your other couple comments @shcheklein.

I'm gonna limit the scope of this PR to what's done now. It's too big already. Fortunately its mostly due to renaming /doc/tutorials -> /doc/learn

I would focus on the content for now, not significant structural changes

I thought structural changes for Get Started was the priority 😅 (both this one and then #599 which I've been working on as well). Should I postpone this work for now and focus on another high priority that is more content-related e.g. redesign the older use cases?

@jorgeorpinel

I thought structural changes for Get Started was the priority

that's true, bu to my mind the biggest potion of this is content - examples, preparing repos, writing text, etc - more than moving sections around.

From https://github.com/iterative/dvc.org/issues/599#issuecomment-599883773
... Learn is not even part of Docs. Mostly because it's too generic. Second, it looks like the whole Learn section for Next is actually one single interactive tutorial

OK, I reverted back to /doc/tutorials but I still need to finish merging all the conflicts from the Gatsby migration... ⏳

Merged. https://dvc-landing-refactor-ge-nouj86.herokuapp.com/doc is running on Gatsby now.

Let's try to address the remaining refactoring in #1074 (or further PRs)? Any problems specific to these nav order changes I can still fix here, of course.


formula_installer: fix fetch call

Fixes #18336

Should we add a regression test for this?

yes, we should. I planned to but am a bit swamped today and would like to get a tag out before macOS 15 is out.

Cool, thanks. I'll look into it.


Unable to route network requests to different DSpace REST API URL during SSR

Is your feature request related to a problem? Please describe.
With Angular Universal, during server-side-rendering (SSR), REST requests are made from server-to-server. After rehydration the client-side-renderting (CSR) REST requests are made from the browser. Using the same URL for both is limiting for production infrastructure deployment causing server-to-server communication to route out of the internal network and back through the public URL which is often through load balancer or proxy. This decreases initial page load performance due to the increased network latency.
Additionally, running locally in a docker network requires either running dspace-angular in development mode or having a public IP for the host machine.
Describe the solution you'd like
The configuration should support providing both URL for DSpace API for when SSR makes requests and for when CSR makes requests. The implementation should alternate which URL to use based on isPlatformBrowser().
Describe alternatives or workarounds you've considered
N/A
Additional context
N/A

Thanks for creating this ticket @wwelling .  For now, I'm pulling this into the 7.3 board, as it might be too late for 7.2 (due Feb 7) unless this work ends up moving quickly & being easy to review.  If somehow it moves quickly, we can see whether it's possible to fit into 7.2.
@artlowel and @atarix83 : just pinging you to make you aware of this ticket & get any initial feedback/ideas you may have.  This is something I stumbled on in trying to enable SSR in Docker on localhost (which doesn't work because SSR and CSR need different URLs in that environment).  @wwelling kindly offered to create the ticket & look into it.

@wwelling and I chatted a bit more about this privately via Slack today, and ran into a significant complication.
Because our REST API uses HATEOAS, and has absolute URIs in the _links section (see for example https://api7.dspace.org/server/), this makes using two different REST API URLs quite complex.
The end goal here is that when the UI runs in SSR mode, it might want a more "direct" way to access the REST API. As an extreme example, if the REST API is running on localhost, then when the UI is running in SSR mode, it really could just make calls to http://localhost:8080/server/.  There's no need for the UI to access the REST API via a public URL until it switches to CSR mode.
But, because our REST API sends all the _links back as absolute URIs, even if you initially access the REST API at localhost:8080, the HATEOAS links will send you to the public URL on the next request.
I'm not yet sure of the best solution, but it seems like there's two obvious options:

When running in SSR mode, the UI replaces the public URL with the local URL (this seems a bit messy/hacky, but it'd be only happening on SSR mode)
Or, we modify the REST API to send _links back as absolute paths instead of absolute URIs.  So, instead of https://api7.dspace.org/server/api/authn it'd send back /server/api/authn.  But, I know that may or may not be controversial, see this StackOverflow for some discussion: https://stackoverflow.com/a/18505331

Overall, I'm not sure of the best approach here, so we may need to consider this more for 7.3 & find time to discuss in a future meeting.

Just a wee note here about the "affects local instances" aspect: I've got local (docker, though this isn't required) DSpace 7 SSR working nicely by editing /etc/hosts so that the hostname used for the backend server can be resolved both within the docker swarm and by my host machine.
This doesn't solve the problem of a true production instance where you want to route browser vs frontend traffic differently on the way to the backend (though some similar host resolution / network routing hacks on the angular machine could probably achieve the same thing without any DSpace code modification)

Just a wee note here about the "affects local instances" aspect: I've got local (docker, though this isn't required) DSpace 7 SSR working nicely by editing /etc/hosts so that the hostname used for the backend server can be resolved both within the docker swarm and by my host machine.
This doesn't solve the problem of a true production instance where you want to route browser vs frontend traffic differently on the way to the backend (though some similar host resolution / network routing hacks on the angular machine could probably achieve the same thing without any DSpace code modification)

@kshepherd is that through https on the backend as well? A case we have is the SSL certificates are all managed on the gateway by the organization. What would help out, in that case of overriding the DNS is to then not have the backend calls be over https while the front end is over https. I was hoping there was a workaround to moving the certs over to internal machine. In one case, I was able to get an organization's private Root CA to be trusted by Node internally by adding it to the environment using NODE_EXTRA_CA_CERTS
As @tdonohue points out, with that StackOverflow link, that it's a good idea to have an absolute URI, but the population of the scheme, host, and port should probably be dynamic based on the incoming requests protocol, port and hostname, this would allow the application to work better behind Gateways and VirtualHosts and reduce some of the integration pain points.
(Note, there's another place where there is "hard binding" of services to absolute URI, and that is in SWORD and SWORDv2, that has always been a bit of a pain when you have gateways your deploying behind and want to make backend calls to those services, removing/improving that would also be a "nice to have")

This ticket came back up in our DevMtg on June 27, 2024 related to performance improvements for Angular SSR.  I'm bumping up the priority to "high" as I think this may require more investigation again to see if we can solve the problem of public vs private REST URL requests (so that SSR doesn't need to use public URLs for requests, which can slow down the SSR process).

@tdonohue
we are working on a solution, can you assign this issue to me?

@atarix83 : Sure, thanks to you & your team for working on a solution!


KYC testing fails

Something that needs to be changed in order for the KYC contract test to be successful.

.deployed() -> new()
https://github.com/Onther-Tech/tokyo/blob/26238729d0c662828b537ebce82f9c40c6ab2819/packages/tokyo-reusable-crowdsale/test/KYC.js#L28
export default 'revert' -> export default 'invalid opcode'
https://github.com/Onther-Tech/tokyo/blob/26238729d0c662828b537ebce82f9c40c6ab2819/packages/tokyo-reusable-crowdsale/test/helpers/EVMThrow.js#L1

yes. tokyo-reusable-crowdsale must have only building contracts, not the tokyo-generated contracts.

"revert" and "invalid opcode" should be distinguished. zeppelin's revert, throw


Postgres DOMAIN support in v15 isn't working

According to V15 release notes (https://github.com/ariga/atlas/releases/tag/v0.15.0), domains should be supported now.
We tried to use it to generate migrations on the following simple schema:
create domain "Amount" as numeric(14, 4);

create table
  "Products" (
    "id" text,
    "price" "Amount"
  )

and the following command:
atlas migrate diff  --dir "file://migrations" --to "file://schema/master_schema.sql" --config "file://atlas.hcl" --dev-url "postgresql://postgres:postgres@localhost:5432/testing?sslmode=disable"
the result was one migration file with the following contents:
-- Create "Products" table CREATE TABLE "public"."Products" ("id" text NULL, "price" "amount" NULL);
As you can see the domain generation is missing from it.
Atlas version is: v0.15.1-7a5cb53-canary

Hey @ilanfrai,
As stated in the doc, domains, functions, and procedures are in beta and available for logged-in users only. https://atlasgo.io/atlas-schema/hcl#domain
I'll make sure we add this info to the blog post.  Thanks for reporting this 🙏


HDDS-7097. Container scanner log output lacks useful information

What changes were proposed in this pull request?

Add log for the exception object when container corruption happens to better identify the failure.
Remove the stack trace of the call to KeyValueContainer#markContainerUnhealthy (not very useful).

What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-7097
How was this patch tested?
Manually test in local cluster to verify the log message.

(cc. @errose28 )

Manually test in local cluster to verify the log message.

Please provide example output.

Sure! I'll add in the PR description!


Name change

Change it back to babel-minify? Ref https://github.com/babel/babili/issues/8
Given that it's just a preset + plugins it makes sense to just be babel-minify so everyone understands what it is and we don't have issues trying to explain it or it's pronunciation.
And after talking with people about it (what's that?), I refer to it as the babel minifier anyway. Haven't met many people that liked the name 😛 .
cli: babili
preset: babel-preset-babili
cli: babel-minify
preset: babel-preset-minify

Message from @thejameskyle:
Since I can already tell this thread will blow up:
A couple notes before you comment in this thread
Please ensure that any comment you are making on this thread is actively contributing to the discussion of a name change. Please do not go on tangents, please be respectful of others (follow the Babel CoC), and don't just keep repeating something that has been said. Be aware of strawman arguments and other logical fallacies and don't do them. Dont assert your own opinions/experiences as the opinions and experiences of the entire community.  We can just clarify pronunciation — Babíli vs. Bábel.

babili

don't care

Meh...  Stick to your guns, it'll work out

Lol, not implying that this will be worth billions of dollars though. Just an example

Haha we can hope

I would really prefer renaming it to babel-minify.
We should just have a name that tells people what it is. I don't see a need to hide the meaning behind a name.

@thejameskyle I'm not sure why babili is disliked so much. I would really prefer to keep it :) Unique-sounding codenames that don't mean much are pretty common and are usually not a problem — underscore, lodash, angular, ember, cheerio, mocha, gulp, etc.

@kangax

underscore, lodash, angular, ember, cheerio, mocha, gulp, etc.

underscore, angular, ember, mocha, gulp are common words and not as search friendly.
Lodash is uniq, it's a play on "low dash", which is an alternative to underscore. Getting too clever with naming bit Lodash though. It used to be Lo-Dash which folks typed as LoDash, lo-dash, or Lodash. I eventually removed the - to keep it simple. Something like babel-minify gives a pretty clear indication of what it is and avoids communication issues.

Unique-sounding codenames that don't mean much are pretty common and are usually not a problem — underscore, lodash, angular, ember, cheerio, mocha, gulp, etc.

Yeah but almost all of those are all umbrella projects. You then have underscore.string, angular-ui, ember-data, gulp-babel.
Having unique names for each individual thing within the projects just makes it confusing.

If everyone finds it confusing then sure, let's change it. I like Babili but I care more about what majority wants :)
Sent from my iPhone

On 29 Aug 2016, at 22:16, James Kyle<EMAIL_ADDRESS>wrote:
Unique-sounding codenames that don't mean much are pretty common and are usually not a problem — underscore, lodash, angular, ember, cheerio, mocha, gulp, etc.
Yeah but almost all of those are all umbrella projects. You then have underscore.string, angular-ui, ember-data, gulp-babel.
Having unique names for each individual thing within the projects just makes it confusing.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Let's also rename Babel to AST-Transformer

Babel at least makes a hint of the context and offers a shot at pronunciation (those familiar with the Tower of Babel).
Babili kinda sounds like some odd mashup of Bambi, Pizza rolls, and Italy.

 +

 +

 = Babili

I'm not sure what it is but it's lost any context.

I vote for Babili.  It's not immediately apparent what it is, sure, but at least you know you've found the droids you were looking for.

Babili is a cooler name for sure, but with the sheer amount of tools developers have to remember to include in their build it only makes sense to name it in a way that describes the use.

Since I can already tell this thread will blow up:
!!!!!!!!!!Note!!!!!!!!!!
Please ensure that any comment you are making on this thread is actively contributing to the discussion of a name change. Please do not go on tangents, please be respectful of others (follow the Babel CoC), and don't just keep repeating something that has been said. Be aware of strawman arguments and other logical fallacies and don't do them. Dont assert your own opinions/experiences as the opinions and experiences of the entire community. Yada yada yada be constructive, be aware, don't be mean.

babelssor

i prefer the declarative nature of babel-minify devs looking in the package json will know immediately what the package does and won't then have to run npm repo babili 😜

@jdalton Bambi, Pizza rolls, and Italy — are you kidding me?! Is there anything cuter, funner and yummier than this ridiculous, weirdly exciting combo? It's unpossible to not go with that... 🍕 🐴 🇮🇹

I have bab too: https://www.npmjs.com/package/bab

babelure

If it's supposed to represent something being minified, shouldn't it be bbl?

Yeah bbl is great, just don't have the npm name although we could always ask

We thought about bbl but it's a common abbreviation so would be even more difficult to find/differentiate.

As a concerned developer I'd like to mention that it's often refreshing to see a package in my dependencies file that describes what it does instead of having to recall what the hell it was for.
There are so many packages with a "tongue-in-cheek" name that I don't recall what half of them do and I often find myself referring to packages and tools by their description during conversations because I simply can't be bothered to memorize all of them 😞

Hey lemme know if you decide to go w/ bbl & it's yours! Much, much, much ❤ for babel from me! Thanks a million to all the contributors!

We thought about bbl but it's a common abbreviation so would be even more difficult to find/differentiate.

Big Beautiful Language! 😄
But yeah, that makes total sense. Just suggesting it so there's an option. I think I'd prefer babel-minify personally.

I'd like to quickly make the vain attempt to argue for poetry in world of prose: An evocative name can, sometimes, bring a moment of levity, a hint of a smile in an otherwise dull day. It can help the project if it adds emotion to function, if only by being more easy to remember (which also helps users). My favorite example is "Plan B" for the morning-after pill. This naming agency (no connection) has a bunch of articles on it.
I'm on the fence if it makes sense here, and I'd say only "bbl" actually fits the idea. It's mostly a matter of size: a programming language can afford to have a non-descriptive name, leftpad should rebrand to 000001.js, but a project that isn't at the center of attention may just make life difficult for everyone by trying to be clever. Does a minifier have the mindshare it takes? I'd say "yes, but it's close".
Because I've frequently run into the what-does-this-package-do-again-problem cited above, I'd also like the following snippet. Maybe it should be used more often in install instructions to make it common practice?
"bbl": "minifier using the babel toolchain",
"bbl": "^1.0.0"

Whilst I myself upvoted 'babel-minify' earlier on in this thread, Matthias has some really powerful arguments here that I emphasise with. 000001.js is a no brainer in hindsight. (Brilliant Matthias. Is that your own original idea?) Likewise in hindsight, 'bbl' needs a second look.
Also, being a long time C/C++ veteran, accustomed to typing 'cc', I think I could easily get rather comfortable and cosy typing 'bb' when using a tool such as Babel which is rapidly becoming ubiquitous in the ECMAScript universe. Maybe in not so long time, Babel + the (its) minifier will be thought of one and the same, like a holy duo. Just an idea, perhaps the Bavel CLI itself could be envoked with just 'bb' and something like a '-m' option to invoke the minifier?  Notice that another variant, 'bl', which is yet a further contraction of 'babel', is a play on 'cl' which some C/C++ compiler CLI's use.

leaves bikeshed

The fanciness of the name should roughly reflect the level of attention required of the developer. Since a precise, self-explanatory name is available and this is just a minifier, having a fancy name seems like unnecessary obfuscation, regardless how clever it is.

Can the CLI be named Babili and use babel-minify/babel-preset-minificatio under the hood?

The name change would really only be for the preset/cli name. All the plugins are independent. We can always alias as well

What I like about "Babili" is that it gives project identity.
We can change the name to something more common and easier to pronounce but I really wish it wouldn't just be "babel-minify". That sounds boring, generic, repetitive/longer to pronounce (if you're talking to someone or giving a talk). It makes more sense for me to hear/say "Meet Babili, a Babel-based minifier" vs. "Meet babel-minify, a babel-based minifier" (what a nice tongue twister).
You can argue that "babel-minify" speaks for itself and then you don't really need to even explain it. But then it's still awkward — if "babel-minify" is a minifier then why isn't it "babel-minifier" or just "Babel Minifier". Is it something that minifies babel (as "babel-minify" would suggest?).
Codenames are good because they're memorable, recognizable, easier to reference. Even the ones that make no sense could work — anyone wondered what in the world "yeoman" is when it came out? We can get the best of both worlds by coming up with something relevant (aka uglify), yet unique. But please let's not do "babel-minify".
/end of bikeshed

@kangax You like the name - fine! Use it for some other project. But you don't need multiple brands for some little utility within Babel. From a marketing point of view, having more brands is worse than less ones. Focus on Babel and build on top of it - babel-min, if you wish, but don't ruin the main brand!

As a +1 for project identity argument, here is another one.
Not everyone uses Babel for their projects. In the future™ we all hope to not use Babel because we'll be able to write just modern JavaScript that does not require compilation step. However, we still need minifiers for a production environment. That's where Babili (as separate, recognizable project) steps in. While Uglify's maintainers are working on ES6+ support, Babili can do it by default.

@nikolay Why do you think it's a "little utility within Babel"? The minifier is a standalone tool on top Babel/Babylon. It's no smaller or different than, say, ESLint which is based on Esprima. I don't see how Babel is affected (ruined) by this at all.

My vote is for babel-minify, I've been waiting for it for ages and yet when I read your post on HN about it I had no clue it was just a minifier until I stumbled upon a link to this issue reading through the comments!

@alexeyraspopov So, your logic is: Keep a non-Babel-related name so people who don't like Babel could be stupid enough to use this instead of Uglify.
Don't get too emotionally attached to things that don't really matter!
In fact, if this is detached from the Babel's brand, being loyal to Babel will keep us using this as part of the ecosystem. Don't try to steal Uglify's "customers" - try to keep us instead.
You created a poll of sorts and a lot of people voted. But, yes, you have all the rights to ignore the feedback.

A developer spends orders of magnitude more time seeing the name, creating folders with that name, seeing their name in the same sentence as the project's name or giving presentations on .
The user's interests are best served by keeping those guys/gals happy, especially regarding such subjective issues.
Personally, I'd argue that "naming your baby" is a sort of natural right of a creator, but I see how that's somewhat subjective.
So to those putting in the hard work: do what you're comfortable with; this project will be measured with yardsticks other than its name. And don't feel bound by on online poll – creative endeavors aren;t usually a good fit for "wisdom of the crowds".

This mostly seems like bike shedding to me (so naturally I'll jump in) and probably doesn't matter much in the end. Babili is a fine name, so would probably most any other name be. Arguments that babel-minify would more accurately describe what the preset does is not entirely on point, since minifying is just the JS community's own term for optimizing. Following that logic, you may as well call it babel-optimize or something to that effect. My point being: for all consumer's sake it's probably less important what the thing is called, and more important that it does what it says on the tin.

I just did a search for babel-minify because I had forgotten this name.

I vote babel-minify, especially for the preset name. Here's my .babelrc... one of these things is not like the other:
presets: [
  "es2015",
  "stage-3",
  "babili"
]

If we want to resolve this incongruence, we can either: rename this to "minify", so the list of presets clearly express what they do. Or, rename all the other presets to "branded" terms like "TwonOneFive" and "StableTown" for es2015 and stage-3 respectively.

+1 for bab over babili/bbl, because it matches its purpose (minifing things, including names), it hints people that it's related babel, it's easy to read/pronounce/remember,  and it's cool.  bbl is hard to read because of dropped vowels, and it hardly makes people think of babel at first glance.
Though babel-minify should be the necessary one.

For our own sanity, rename this to "minify"!

I only recently discovered babili after removing my babel build step (now that all desktop/mobile browsers have near complete ES2015 support, and I'm not using any ES2016+ yet), only to discover that uglify doesn't support arrow functions (!?).
The very next day I wanted to read more about it, but promptly forgot if it was spelled babili, babeli, babilli, babelli, etc.
I took a (wrong) guess at babeli (on the assumption that it was babel + i) and found nothing on the first page of Google results.
I ended up googling "babel minifier" to find it.
So on that basis, I would personally vote for babel-minify.

@scottohara Yup! Without any doubt, "uglify" is a more beautiful name tan "babili"!

I can't imagine how browserify people will call babili transformer. Babiliify? 🤔

Take a look at the names of the tv characters for Transformers and give the name its own identity that people can relate to: https://www.wikiwand.com/en/List_of_The_Transformers_(TV_series)_characters

I like Babili because the suffix -li is used as a diminutive in Swiss German.
It's used to make things small and cute. That's where the names for Google's new compression algorithms come as well. Brotli (should actually be Brötli) means small piece of bread, Brot being the actual word for bread. Same thing with Zopfli (Zöpfli), another type of bread called Zopf. Lately they added Guetzli, a new JPEG encoder and the word for cookie. Cookies are always small and cute so I'm not aware of the non-cute version. An in all a very Swiss thing, see my name.

Ok well I didn't take that long to decide.. not
I wanted to change it to babel-minify for a while and I don't think anyone on the team disagrees? It's clearly voted on 10x more, and makes more sense for anyone that is newer (babel-minify makes sense) and theres way too many changes people ask "what's that babel minify thing called".
The individual packages don't reference babili, so we'll just have to update the main pkg + integrations (webpack, rollup, cli, gulp, etc), and docs.


Exercise 4 (propTypes) passes trivially

Exercise 4 says to expect a Warning in the console, but no warning shows by default. This clause is added:
Todo.propTypes = {
        title: React.PropTypes.string.isRequired
    };

but both the Todos already have titles.
One solution would be to add an invalid item in TodoBox
<Todo>5 km</Todo>

and add expected output, including a line like
Run	5 km

I've wrongly changed title: React.PropTypes.number.isRequired to title: React.PropTypes.string.isRequired.
I merged #90 and return string to number, so that Exercise 4 seems to became more difficult :smile:

@kohei-takata where you changed string to number? There is still string.


Fix #84 NoSuchMethodException: PrefixQuery.getTermsEnum

Explanation :
Method getTermsEnum was removed from PrefixQuery in favor of the parent class AutomatonQuery, see :
https://github.com/apache/lucene-solr/commit/6a6c72992040b907f7894e63a4ff79253d02b1f5
Fix :
search for method in all class hiearchy
Caveat :
no unittest update for this change (it does not seems there are any tests... if am wrong, please point me to the proper direction)

Sorry for late response, merged. Thanks!

No pb! Thanks @mocobeta.

Released luke 6.5.0 https://github.com/DmitryKey/luke/releases/tag/luke-6.5.0 including this fix.


Formatting Vue SFC Files Results in 'Cannot read properties of undefined (reading 'match')' Error

Your Environment

Prettier version: 3.2.5
node version: 20.11.1
package manager: pnpm@8
IDE: VScode

Describe the bug
When attempting to format Vue Single File Components (SFC) with Prettier, I encounter a TypeError: Cannot read properties of undefined (reading 'match'). This issue arises specifically when using @ianvs/prettier-plugin-sort-imports. However, switching to @trivago/prettier-plugin-sort-imports does not produce this error.
To Reproduce

Create a new Vite project using pnpm create vite.
Install both @ianvs/prettier-plugin-sort-imports and @trivago/prettier-plugin-sort-imports.
Try formatting a .vue file with Prettier.
The error occurs when @ianvs/prettier-plugin-sort-imports is enabled, but not with @trivago/prettier-plugin-sort-imports.

Expected behavior
Expected Prettier to format Vue SFC files without any errors, applying the configured code style rules.
Screenshots, code sample, etc
Not applicable due to sensitive content. The issue occurs with any Vue SFC file, regardless of its content.
Configuration File (cat .prettierrc, prettier.config.js, .prettier.js)
module.exports = {
    printWidth: 80,
    tabWidth: 4,
    trailingComma: 'all',
    singleQuote: true,
    semi: true,
    plugins: ['@ianvs/prettier-plugin-sort-imports'],
    importOrder: [
        '^@core/(.*)$',
        '',
        '^@server/(.*)$',
        '',
        '^@ui/(.*)$',
        '',
        '^[./]',
    ],
    importOrderParserPlugins: ['typescript', 'jsx', 'decorators-legacy'],
    importOrderTypeScriptVersion: '5.0.0',
};

Error log
TypeError: Cannot read properties of undefined (reading 'match')
    at Do (/Users/nofeel/Desktop/example/prettier-test/node_modules/.pnpm/prettier@3.2.5/node_modules/prettier/plugins/html.js:19:6172)
    at Ks (/Users/nofeel/Desktop/example/prettier-test/node_modules/.pnpm/prettier@3.2.5/node_modules/prettier/plugins/html.js:19:19158)
    at Object.parse (/Users/nofeel/Desktop/example/prettier-test/node_modules/.pnpm/prettier@3.2.5/node_modules/prettier/plugins/html.js:19:19854)
    at parse4 (file:///Users/nofeel/Desktop/example/prettier-test/node_modules/.pnpm/prettier@3.2.5/node_modules/prettier/index.mjs:22117:24)
    at async coreFormat (file:///Users/nofeel/Desktop/example/prettier-test/node_modules/.pnpm/prettier@3.2.5/node_modules/prettier/index.mjs:22607:7)
    at async formatWithCursor (file:///Users/nofeel/Desktop/example/prettier-test/node_modules/.pnpm/prettier@3.2.5/node_modules/prettier/index.mjs:22809:14)
    at async Module.format2 (file:///Users/nofeel/Desktop/example/prettier-test/node_modules/.pnpm/prettier@3.2.5/node_modules/prettier/index.mjs:24194:25)

Contribute to @ianvs/prettier-plugin-sort-imports

[ ] I'm willing to fix this bug 🥇

Thanks for the report, does this also happen with version 4.1.1 of this package?  Also, what version of vue are you using?

I have the same issue, and it works with version 4.0.2, but fails with versions 4.1.1 and 4.2.0.
I am able to reproduce this on a small package with below dependencies only:
{
    "name": "dummy",
    "private": true,
    "devDependencies": {
        "@ianvs/prettier-plugin-sort-imports": "^4.2.0",
        "@vue/compiler-sfc": "^3.4.21",
        "prettier": "^2.8.8"
    }
}

Thanks for the report, does this also happen with version 4.1.1 of this package? Also, what version of vue are you using?

Sure, I just started my new project, so they're all the latest versions.
"@ianvs/prettier-plugin-sort-imports": "^4.2.0",
"prettier": "^3.2.5",
"vue": "^3.4.21",

I have the same issue, and it works with version 4.0.2, but fails with versions 4.1.1 and 4.2.0. I am able to reproduce this on a small package with below dependencies only:
{
    "name": "dummy",
    "private": true,
    "devDependencies": {
        "@ianvs/prettier-plugin-sort-imports": "^4.2.0",
        "@vue/compiler-sfc": "^3.4.21",
        "prettier": "^2.8.8"
    }
}

Reproduce at: https://stackblitz.com/edit/stackblitz-starters-g2p6xd?file=package.json

v4.0.2 also has this error, just has below code
import type { Ref } from "vue"

this is my config
{
  importOrder: [
    '<TYPES><THIRD_PARTY_MODULES>',
    '<THIRD_PARTY_MODULES>',
    '',
    '<TYPES>^@/(.*)$',
    '^@/(.*)$',
    '',
    '<TYPES>^[./]',
    '^[./]',
  ],
}

Same error, after upgrading this morning to the new version 4.2.0

Thanks for the reports, everyone.  This broke because of the way we tried to detect vue 3 vs vue 2.7 when we added support for 2.7 in the last release.  It seems that @vue/compiler-sfc had what I would consider a breaking change between version 3.3 and 3.4, removing an export.  We were running our tests with 3.3 and everything worked, but the more recent versions break.  I've pushed up a PR that will detect the vue version more reliably, and should continue to maintain support for both vue 3 and 2.7.

Thanks for the reports, everyone. This broke because of the way we tried to detect vue 3 vs vue 2.7 when we added support for 2.7 in the last release. It seems that @vue/compiler-sfc had what I would consider a breaking change between version 3.3 and 3.4, removing an export. We were running our tests with 3.3 and everything worked, but the more recent versions break. I've pushed up a PR that will detect the vue version more reliably, and should continue to maintain support for both vue 3 and 2.7.

Thank you! This is my first time mustering up the courage to raise an issue, and it has given me a great sense of accomplishment.😄

I met the same error, here's the version:
{
  "vue": "2.7.16",
  "@vue/compiler-sfc": "2.7.16",
  "@ianvs/prettier-plugin-sort-imports": "4.2.1"
}

If I upgrade "@vue/compiler-sfc": "2.7.16" with "@vue/compiler-sfc": "3.4.21", it works well.
But my vue is 2.7.16, I'm worried about what problems upgrading @vue/compiler-sfc may bring 😂😂.

Thanks @shalldie.  If you're willing to open a new issue and ideally include some steps to reproduce or a link to a reproduction, that would be awesome.

@IanVS
I open an issue: #162 (Which try my best using english 😂)


Improve BarChart Table renderer.

Fixed #644
BarChart Table renderer now can render negative values as well as positive.

Working example: http://pivot.src.ilyaguy.me/examples/simple_ui_bc_negative.html

excellent!

OK, I've just merged in the changes from this PR to master, with darkred instead of red. Thanks for the PR and apologies for taking so looong to merge it :)


WebkitInvalidResponseError on 204

When a URL returns a 204 no content, capybara-webkit raises WebkitInvalidResponseError

I'm closing this issue due to inactivity, please feel free to re-open it in case you're still having these issues.


Crash when using context generated by another model.

I've been adopting the use of generate() and then using the context to give AI memory.
Then I tried seeing what happen when I switch AI model. An assert failed and gave me this.
Assertion failed: it != m_data.m_value.object->end(), file F:/MyStudio/Technology/JG_SDL/engine/OllamaHTTP/json.hpp, line 21472
I don't know if this was even possible since I was able to do the same thing in WebUI and it was able to do fine.
Is this possible? If not, is there a possible way?

I think this is supposed to function. Can you fix this? I would like it very much!
It does not crash when using the model that uses a context data generated by the same model. It does when you changed model and use context generated by a different model. Maybe it has something to do with how it pass the data in Json? Maybe it was expecting it to be of a certain length? I'm not sure.


Enhancements to Slack emoji-vote process

Tracking feature requests to the slack.emoji-vote process:

[x] Add placeholder emojis (Metagov bot adds 1 reaction per emoji) https://github.com/metagov/metagov-prototype/pull/86

[ ] For boolean votes, only allow one vote per person. Automatically remove their previous emoji-reaction when a user submits a second vote.

[ ] Add support for single-select choice votes, using the same mechanism of auto-deleting previous votes. Maybe: use options poll_type: boolean|choice and min: int and max: int to specify the min and max vote casts permitted for choice votes.

[ ] Add option disallowed_participants: str[] for list of voters that are not allowed to vote. The disallowed voters have their emoji-reactions removed. (Used by PK to exclude "proposer")

[ ] Add option allowed_participants: str[] for list of voters that are allowed to vote. This could be performed as a group message or in a channel.

[ ] Add option(s) to allow the caller to customize the behavior of close. Currently it edits the existing message to say "voting closed" and displays the final vote count. The driver may want to do any number of things instead: edit the voting post with a custom message, post an outcome in the thread (the message may need to be decided on-the-fly based on the outcome of the vote), send DMs, etc. The slack.emoji-vote process won't be able to support all possibilities, but it should have a reasonable default that can be disabled. Screenshot of current behavior:

[ ] If the voting post gets deleted, mark the process completed (maybe with an error)

[ ] Add option private: bool for performing private vote as direct messages to each participant.

What about an optional vote threshold? Basically something that would turn a 51/49 result into a wash - you could set the threshold to 60% and then you'd have to get 60/40 or 40/60 or more to actually produce a result.
Also: do we want to expand options to more than an up or down vote? For instance, allowing an abstain option, or alternatives of the caller's choice?
Part of the complexity here is that you can use emojis to represent a variety of different processes - majority vote (and within that, supermajority vote), consensus process, polls. I don't think we necessarily want to shove everything into one GovernanceProcess, but it would be good to experiment and see what elements can be abstracted out, because I think we do want people to have the flexibility to say "I would like a [majority vote/consensus/poll-format] [comment/emoji-mediated] vote on [Github/Slack/Discord]" and we probably don't want to code every single one of those by hand.

This looks good to me as a first step of common options!
Re @shaunagm's thoughts:

I don't think we want to be capturing here the different forms of vote aggregation, only forms of vote elicitation. The vast world of voting/social choice theory is difficult to flexibly author and is something better decided by the driver, who also may have a lot more information about voters to make those decisions. The decision of how to count votes and whether something passes is squarely in the scope of what a policy is for, and drivers are where policies are defined. Re - "we probably don't want to code every single one of those by hand" - I totally agree, policy templating is something we want to do but I see that happening in PolicyKit/it is already happening in PolicyKit.
Abstain is interesting as an option separate from ignoring the vote altogether but I think it should not be included by default because it's more niche.

Oops just saw the request to comment on "customize behavior of close". The options you are describing seem just like options you'd generally want for notify/post_message? Like having a post_message that takes as input an existing message ID that you could say you want to replace/append text/respond to in thread. Could we add these as options to that general function and then call that? I think the default behavior for closing should actually just be posting a whole new message (customized by the policy author but with some generic vote count + pass/fail outcome) as this is the most simple.

Thanks @amyxzhang and @shaunagm . Addressing the comments about "close":
In Loomio, there are 2 steps to completing a voting process: first "closing" the vote, and then (optionally) "sharing the outcome." "Close" means that nobody can cast votes anymore, the voting period has ended, and perhaps the number of votes cast for each option are made visible if they weren't already. "Share outcome" is the notification of the outcome of the vote (here's an example if you want to play around with it in the Metagov Loomio https://www.loomio.org/p/y2C4R3wu/test).
I think these concepts of close vs share outcome are super relevant to your comments @amyxzhang.  For Slack emoji-vote, here is how I see these two concepts:

"close vote" just means that it is made clear to the participants in the channel that they can no longer cast votes on the message. Maybe it displays the final vote count, too. I think editing the post to say "vote closed" or similar makes sense for this.

It's more straightforward for processes like Discourse Poll where we can make a call to actually close and lock the vote in the Discourse UI (code). For Open Collective emoji-voting, we prefix the vote thread with [CLOSED] which is pretty ugly, but gets the message across.

"share outcome" is more open ended, and I think it should be optional. For Slack it could be sending DMs to participants, sending a message to the 'proposer,' posting in a thread, editing the original post, etc. I haven't implemented anything for this in any GovernanceProcesses because I feel like it should be up to the Driver, which has enough context to decide what the outcome should be and who should see it. In the propose-seminar policy, for example, the act of sharing the outcome in the thread is completely separate from the slack.emoji-vote GovernanceProcess–– it's just an action that the policy takes after the vote has been closed.

The other approach: Alternatively, we could add a bunch of options to the call to close so that it includes the outcome-sharing post. I'd prefer not to do this because it adds more complexity to the GovernanceProcess and requires us to come up with the outcome-closing options up front.

What do you two think of the "close" vs "outcome" language, and how they apply to emoji voting?
Note- my thinking here is different from what I originally wrote in this issue! 😃  I think my "feature request"  now would be simply to add a few options to slack.emoji-vote such as whether to show the final vote count on close.

... I think we do want people to have the flexibility to say "I would like a [majority vote/consensus/poll-format] [comment/emoji-mediated] vote on [Github/Slack/Discord]" and we probably don't want to code every single one of those by hand.

I don't think we want to be capturing here the different forms of vote aggregation, only forms of vote elicitation. The vast world of voting/social choice theory is difficult to flexibly author and is something better decided by the driver, who also may have a lot more information about voters to make those decisions. The decision of how to count votes and whether something passes is squarely in the scope of what a policy is for, and drivers are where policies are defined. Re - "we probably don't want to code every single one of those by hand" - I totally agree, policy templating is something we want to do but I see that happening in PolicyKit/it is already happening in PolicyKit.

Suuuper important questions. I think @shaunagm mentioned an idea earlier that Metagov processes could compute an outcome (say, using majority-vote) and ALSO return the raw voting data to the Driver, which might suit both PolicyKit and other Drivers that want to take advantage of plugins that do their own "outcome computation."
For me these questions bring up a tension of whether Metagov is (just) an "API Gateway for governance tools," or if it's something more ("Modular Governance System"?). The modularity/interoperability that is implied by the quoted comment from @shaunagm is really important to the research project overall, I think, and it's not totally clear to me exactly which pieces of this "interoperability" are achieved by Metagov vs by the Driver's "policy templating" capabilities. Hopefully that made some amount of sense 🌀

In the future, yes, we want to move towards the ability to turn vote aggregation code snippets into declarative units you can mix and match. Whether that lives in MG versus PK/drivers - in my opinion, I like the clean split right now of MG as the API connector to governance tools and drivers as the holder/author of a community's governance information and logic. I do think a library of different kinds of governance logic, such as different kinds of vote aggregation logic, is something I want to build into PK directly and aligns well with what PK is meant to be - a general purpose governance authoring tool. It seems non-ideal to have that duplicated in MG and a muddying of purposes so that eventually everything becomes duplicated!

As an example, PK will have direct access to prior votes, member info and history, roles and permissions, other policies, etc. that are often inputs into aggregation. It would be a big change in terms of what MG has to keep track of to implement, say, liquid democracy aggregation within MG.
In addition, there are interesting end-user facing aspects on the side of authoring - I want to build in PK ways to author, publish, and fork templates so that it becomes a social, generative library accessible to all users, as opposed to interfaced directly through, say, making a PR to the MG github/searching the MG API docs.

Perhaps this means that other drivers could use PK+MG in concert if they desire, but decide what parts of the PK UI they want to use (including none of the UI but just the libraries)? Related - I would also like to eventually modularize the PK UI so you can select different UI widgets/components depending on what governance tools you are using.
Final thought - we don't have to decide this now. In terms of immediate pressing needs to get these tools out to communities - for now, you can author any kind of vote aggregation in PolicyKit.

Oh and I like @mashton's thoughts around "close" vs "share outcome"!

Whether that lives in MG versus PK/drivers - in my opinion, I like the clean split right now of MG as the API connector to governance tools and drivers as the holder/author of a community's governance information and logic. I do think a library of different kinds of governance logic, such as different kinds of vote aggregation logic, is something I want to build into PK directly and aligns well with what PK is meant to be - a general purpose governance authoring tool. It seems non-ideal to have that duplicated in MG and a muddying of purposes so that eventually everything becomes duplicated!

I understand this perspective, but remember that Metagov is meant to support multiple drivers. Keeping the logic solely in PK means that it needs to be duplicated for every driver. I much prefer a model where Metagov provides options that a driver can override, even though that leads to some duplication.

As an example, PK will have direct access to prior votes, member info and history, roles and permissions, other policies, etc. that are often inputs into aggregation. It would be a big change in terms of what MG has to keep track of to implement, say, liquid democracy aggregation within MG.
In addition, there are interesting end-user facing aspects on the side of authoring - I want to build in PK ways to author, publish, and fork templates so that it becomes a social, generative library accessible to all users, as opposed to interfaced directly through, say, making a PR to the MG github/searching the MG API docs.

PK could still do all of these things. It would just ignore whatever aggregation MG came up with and perform its own, using the additional information it has available. In this model, MG is never overriding the driver, it's just performing extra work so the driver doesn't have to unless it wants to.

Perhaps this means that other drivers could use PK+MG in concert if they desire, but decide what parts of the PK UI they want to use (including none of the UI but just the libraries)?

Requiring other drivers to use PK seems like a bigger change to the MG architecture than adding some aggregation/tallying logic to core.

And I like the separation out of "close" and "share" - these seem like two distinct things.

I agree with your arguments @shaunagm about wanting to avoid duplication. My concern is that the rationale of "not wanting to duplicate things for every driver" can be an argument that applies to many things. My examples about the things that PK can do today is just to say one could argue that other drivers might be interested in these as well (and why not? A policy library sounds like it could be useful generally), and it would be a big change to make them work in MG. If there comes to be more and more duplication between PK and MG due to creeping scope in MG, that would be an unfortunate waste of time IMO that could instead be saved by just letting drivers access PK (certainly not as a requirement to use MG but if there is a desire by them to access a library of policies authored in PK, why not? Even separately from this conversation, I think this could be a good idea...)
Of course a little bit of tallying logic is not a big deal (though it is trivial enough that it doesn't seem that useful either), but moving towards vote aggregation more generally would certainly be (what I was trying to show with the examples I gave above). If we stop with some simple kinds of tallies, ok fine---though it does still feel muddying to me (because then, why not other kinds of tallies too?)
We can discuss this at length in person tomorrow! :)

Closing in favor of follow-up issues
https://github.com/metagov/gateway/issues/181
https://github.com/metagov/gateway/issues/183
https://github.com/metagov/gateway/issues/184
All of these could be applied to Discord, too, is very similar


toEqual does not treat non-enumerable properties equally

🐛 Bug Report
I discovered some inconsistent behavior in the toEqual matcher in Jest; when comparing to objects, it ignores non-enumerable properties, but only if they are not symbols. This leads to quite inconsistent behavior:
This test passes:
const actual1 = {
        x: 3
}
Object.defineProperty(actual1, "test", {
        enumerable: false,
        value: 5
})
expect(actual1).toEqual({ x: 3 })

But this one doesn't:
const actual2 = {
        x: 3
}
const mySymbol = Symbol("test")
Object.defineProperty(actual2, mySymbol, {
        enumerable: false,
        value: 5
})
expect(actual2).toEqual({ x: 3 })

Where one would expect both to behave the same.
The cause of the issue can be found here. To find the string properties the for..in loop is used which ignores non-enumerable properties, but for the symbolic properties getOwnPropertySymbols is used, which will include non-enumerable properties.
To Reproduce
See link below
Expected behavior
Non-enumerable symbolic properties should be treated the same as non-enumerable non-symbolic properties when running toEqual. Either both should be included, or excluded. Given that symbolic properties are lot more exotic, I think the behavior of string properties should be followed and non-enumerable symbolic properties should be excluded from deep equality.
I am willing to file a PR myself
Link to repl or repo (highly encouraged)
https://repl.it/@mweststrate/IckyMeanProgrammers
Run npx envinfo --preset jest
Paste the results here:
  System:
    OS: Linux 4.15 Ubuntu 18.04 LTS (Bionic Beaver)
    CPU: x64 Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
  Binaries:
    Node: 9.3.0 - ~/.nvm/versions/node/v9.3.0/bin/node
    Yarn: 1.6.0 - /usr/bin/yarn
    npm: 5.5.1 - ~/.nvm/versions/node/v9.3.0/bin/npm
  npmPackages:
    @types/jest: ^21.1.9 => 21.1.10
    jest: ^22.0.4 => 22.4.4

Added PR: https://github.com/facebook/jest/pull/6398, as that is often more clarifying than a bug report :)


✨ Deprecate Python 3.7

Description
✨ Deprecate Python 3.7

:tada: This PR is included in version 0.8.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Create a Module for Producing a Hex String

Purpose
https://github.com/wso2-enterprise/choreo/issues/28451

 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.


Preview 2 WasiCtx is not easy to update

The preview 2 WasiCtx does not expose any methods for manipulating its contents. This can lead to the user having to write very awkward and error prone looking code such as this:
fn set_stdout(store: &mut Store<Context>, stdout: &WritePipe<std::io::Cursor<Vec<u8>>>) {
    let key = store.data().wasi.stdout;
    store
        .data_mut()
        .table_mut()
        .delete::<Box<dyn OutputStream>>(key)
        .unwrap();
    store.data_mut().wasi.stdout = store
        .data_mut()
        .table_mut()
        .push_output_stream(Box::new(stdout.clone()))
        .unwrap();
}

Would it make sense to add methods like on preview 1's WasiCtx that mirror the builder methods and make it trivial to update aspects of the context? One complication to this is that many of these methods would require the Store as well. Perhaps it would make sense to add these to WasiView instead?
Let me know what you think. I'd be happy to contribute the implementation if we can come to an agreement on if and where these methods should exist.

My thinking with the design of preview2's WasiCtx and WasiCtxBuilder is for the embedder to exclusively manipulate the WasiCtxBuilder, then put it inside a Store once it is complete. The wasmtime::component::bindgen trait implementations can then exclusively manipulate WasiCtx (and Table, via WasiView), because the bindings generation abstracts away the Store extraction.
I know there are some methods missing from WasiCtxBuilder, and Dan added a few of them while I was out on vacation last week.
Does that distinction make sense, and work for your application?

https://github.com/bytecodealliance/wasmtime/pull/6652 makes all of the WasiCtx members private, so the only way to change the value for stdout, as in your example, is when using the WasiCtxBuilder.

I did some refactoring of the codebase that prompted this issue and was able to get things working. I think we can close this issue.


Bug in adding new product

After adding a new product, the route isn't redirected to the intended page. No idea what's going on..... Probably gonna troubleshoot tomorrow.

Bug fixed for now. The commit bf3d8a084a14120b393863d1af9f72880daf19c4 fixed this. Hence closing this issue.


Install dependencies using opam

Nice project!
I'm sending this PR as a suggestion on improving the installation instructions a bit. I didn't dare edit the README – I think it's better for your own style to come through it :)
This PR is just a suggestion. You're welcome to incorporate any (zero or more) parts of it in any way you see fit, and don't bother with citing me as the author in any resulting commits :)
I'm concerned about the temporary pinning of b2piet, but I don't know a better way right now.
From the commit message:
After this commit, one can install all the dependencies by running

  make depends

This temporarily pins b2piet as an opam package, then installs all the
dependencies, without installing b2piet.

The main advantage of doing it this way is that opam will check the
compiler version, and it is possible to add version constraints on the
packages later.

The commit also lists package conf-libpng as a dependency. Installing
conf-libpng runs a check for the presence of libpng on the user's
system. If libpng is not installed, the user gets an error message with
instructions.

I am concerned that there is not an optional dependency from camlimages
on conf-libpng, which could, in principle, permit camlimages to be
compiled before the conf-libpng check is run. If that really is
possible, the problem should be fixed upstream in the opam repository.

I didn't update the README.

Hi! Thanks for the PR. In hindsight, easy dependency installation seems like a nice thing to do; I just didn't think of it because I haven't had to do it again after doing it once initially :sweat_smile:.

I am concerned that there is not an optional dependency from camlimages
on conf-libpng, which could, in principle, permit camlimages to be
compiled before the conf-libpng check is run.

I think that's true. The opam file for Camlimages doesn't mention any dependency on conf-libpng.
The Omakefile just proceeds with installation if you don't have libpng installed. I recall being puzzled with not being able to generate PNGs early on, when I hadn't read the instructions...
Also, looking at conf-libpng's opam file, it seems to be declaring dependencies for Debian, Mageia and Ubuntu, so it won't work on other Linux distros/MacOS?

easy dependency installation seems like a nice thing to do; I just didn't think of it because I haven't had to do it again after doing it once initially

Yeah, I tend to lose track of dependency installation too, when working on complete executables (rather than libraries destined for opam).
cc @camlspotter about the depopt on conf-libpng. It looks like several other depopts should be added as well. I can submit a patch on BitBucket and/or update the existing releases in opam, if you like.
conf-libpng "should work" on all platforms. This line
build: [["pkg-config" "libpng"]]

will, of course, succeed only if the user's system has pkg-config, and the pkg-config knows about an installed libpng. On failure, it may print generic instructions about what to do. The lines for Debian, Mageia, Ubuntu are IIRC only needed for running opam depext conf-libpng, which uses opam to trigger the system package manager. Those lines tell opam what the system package name is.
The reason for "should work" in quotes above is that there is also a conf-pkg-config, and it looks like the detection method in conf-libpng requires conf-libpng to depend on conf-pkg-config, mainly so that depext can install both. The missing conf-pkg-config dependency, and the lack of package names for most platforms, makes me worry a bit that conf-libpng hasn't gotten the attention it deserves lately :)
I'd normally be happy to test on macOS and show what the error looks like for me, but given how many system packages I have compiled against libpng, I'd rather avoid this for now :)

Also, I just realized the opam file probably needs an `"ocamlbuild" {build}" dependency too. Right now, I think Ocamlbuild is being installed only accidentally, because some other dependencies need it. I can amend the commit, if you wish.

Thanks for the explanation; I didn't know all those details about opam.
Sure, go ahead with the small change, I'll merge it then.

I added the Ocamlbuild dependency (sorry for delay). You're welcome to merge it any way you like, including squash-merge, and splice/edit the commit messages as needed.

sorry for delay
Oh no, you delayed my plans for world domination 😆 !

So GithHub didn't automatically close the PR (I merged locally using --squash and pushed but I guess it doesn't understand that), so I've closed the PR manually ...

:D
Yeah, the web UI does give you a chance to edit the commit messages when squashing. GitHub only automatically recognizes PRs as merged (as opposed to closed, or no effect) when all the commits in the PR appear in master, with the exact same hashes, so that precludes most command-line merging strategies. So it's probably best to use the green button for squashing :)


F18 radio panel issue

Hi you did a real good job
well i've got an issue on F18 module, radios/channels are displayed well, but the knobs dont change anything (volume or channel)
is there a fix ?
Thanks !

Bios version?

https://github.com/DCSFlightpanels/DCSFlightpanels/wiki/Creating-Github-Issue(s)-(bug-reports---feature-requests)

Duplicate of #75

Have you tryed the prerelease  4.2.10 ?


Improve APIs & Docs

Implement common traits & add docs to all our crypto types

closed in https://github.com/celo-org/bls-zexe/pull/169


Adding DELETED to Status enum

'deleted' appears to be a new status from Zendesk. The following exception can occur:
org.zendesk.client.v2.ZendeskException: java.lang.IllegalArgumentException: Can not construct instance of org.zendesk.client.v2.model.Status from String value 'deleted': value not one of declared Enum instance names: [new, open, pending, hold, solved, closed]
 at [Source: N/A; line: -1, column: -1] (through reference chain: org.zendesk.client.v2.model.Ticket["status"])
org.zendesk.client.v2.ZendeskException: java.lang.IllegalArgumentException: Can not construct instance of org.zendesk.client.v2.model.Status from String value 'deleted': value not one of declared Enum instance names: [new, open, pending, hold, solved, closed]
 at [Source: N/A; line: -1, column: -1] (through reference chain: org.zendesk.client.v2.model.Ticket["status"])
        at org.zendesk.client.v2.Zendesk.complete(Zendesk.java:1403)
        at org.zendesk.client.v2.Zendesk.access$1000(Zendesk.java:67)
        at org.zendesk.client.v2.Zendesk$PagedIterable$PagedIterator.hasNext(Zendesk.java:1549)

This is not in the Zendesk documentation, and I've reached out to them accordingly, but pre-emptive support, given this is occurring in production, seems like a good idea.

I reached out to Zendesk support, and they agreed this is normal and should be in the documentation. The correspondence should be here: https://support.zendesk.com/hc/requests/1149241

+1 to this pull request! :)
Thank you, Hillgod!


REQUEST: Direct Edit, Drag & drop

Great extension.  The only additional detail I would like to see is the option to edit individual bookmarks directly in the page (e.g., delete, move, add), without having to open bookmarks separately in FireFox.  This may not be so easy to do, but worth asking!  Thanks.

Ohh, yes. Every time I do such an action it annoys me.
Please, allow actions on the bookmarks itself. Most important for me is to reorder and delete bookmarks.
Is that possible? Can we help?

To add/delete would be especially important for the folder "Most visited". I couldn't figure out why and when some links did appear under this heading. I have some pages there I visit not so often and I am missing other important pages. Is there a specified number of visits necessary? Would nice if one could control this number.

The "Most visited" list is provided by the browser, I'm not entirely sure how the sites in it are determined.
I am planning to add some basic bookmark editing at some point.

Great to hear.  I look forward to that!
On Wed, Jul 4, 2018 at 9:02 AM, Isaiah Billingsley<EMAIL_ADDRESS>
wrote:

The "Most visited" list is provided by the browser, I'm not entirely sure
how the sites in it are determined.
I am planning to add some basic bookmark editing at some point.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/quodroc/HumbleNewTabPage/issues/56#issuecomment-402503678,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Aj2igjuWGVN2VAd5dDOxIIau1IT3VjK_ks5uDNjzgaJpZM4SyaJX
.


Update tabs component to allow for a single tab that can be toggled

Allows for a single tab to be present and toggle-able, depending on the parameters.
Also introduces a hideTab parameter.
When we have a single tab, want to have is expanded but not show the tab list item, set it to true
This page has the most diverse examples: https://deploy-preview-557--govuk-design-system-preview.netlify.com/patterns/question-pages/
To announce to screenreaders that the tab is expanded / collapsed we toggle aria-expanded tag on the trigger and aria-hidden on the content container.
Trello ticket: https://trello.com/c/wF6tmFc1/1321-iterate-example-code-block-tabs-2

You can preview this change here:
Built with commit 923652a405be4a2342fceb876ea80502a179c774
https://deploy-preview-557--govuk-design-system-preview.netlify.com

To announce to screenreaders that the tab is expanded / collapsed we toggle aria-expanded tag on the trigger and aria-hidden on the content container.


[FLINK-6075] - Support Limit/Top(Sort) for Stream SQL

Order by time and optionally other fields is supported
Thanks for contributing to Apache Flink. Before you open your pull request, please take the following check list into consideration.
If your changes take all of the items into account, feel free to open your pull request. For more information and/or questions please refer to the How To Contribute guide.
In addition to going through the list, please provide a meaningful description of your changes.

[x ] General

The pull request references the related JIRA issue ("[FLINK-XXX] Jira title text")
The pull request addresses only one issue
Each commit in the PR has a meaningful commit message (including the JIRA id)

[x ] Documentation

Documentation has been added for new functionality
Old documentation affected by the pull request has been updated
JavaDoc for public methods has been added

[x ] Tests & Build

Functionality added by the pull request is covered by tests
mvn clean verify has been executed successfully locally or a Travis build has passed

@fhueske I updated the code to work with 1.3 (CRow, FlinkLogicalSort....) and all the implied changes.
We can close #3714 after we merge this i guess
..that one is the same logical code only on the old interface

@hongyuhong @stefanobortoli @shijinkui i forgot to add you to the PR

@fhueske @stefanobortoli @shijinkui @hongyuhong
I have updated the PR. In principle all remarks were addressed. This should be ready to merge (i hope)

@fhueske  I have addressed the remarks you have done (with 1-2 minor exceptions for which you can see my comments). Please have a look. I think it could be ready to be merged and than I can start the preparation for the offset and fetch

@fhueske Thanks for the review and for handling the the fixes (sorry for still kipping some :( ). I will create this week the PR for the rest of the functions.


Big database schemas may not fit into database table (text-column) when saved.

From<EMAIL_ADDRESS>on February 04, 2011 10:47:45
What steps will reproduce the problem? 1. I reverse engineered a database with lots of tables
2. Saved schema into database
3. Load again fails ... there are only 65.535 characters in text-column. What is the expected output? What do you see instead? No error reported on the GUI about that. Loading that schema just returns a blank workarea. What version of the product are you using? On what operating system? 2.5 Please provide any additional information below. Solution I'd see:
instead of using a TEXT-datatype (65.535, 2^16 – 1 bytes) use a MEDIUMTEXT  datatype (16.777.215, 2^24 – 1 bytes)
cheers,
Marcel
Original issue: http://code.google.com/p/wwwsqldesigner/issues/detail?id=117

From<EMAIL_ADDRESS>on February 04, 2011 01:50:47
Ooops, sorry ....
I had version 2.4 installed previously and just replaced files to 2.5.
Just saw that in 2.5 the datatype IS already mediumtext.
This is obsolete then :(( Sorry...

From ondrej.zara on February 04, 2011 06:53:48
Status: Invalid


releaseCompile编译出错

releaseCompile 'com.zxy.android:recovery-no-op:0.1.4'
编译时出错

Hi,my fault.
I forget to add "recovery-no-op" to jcenter, it will be able to use in a few days, you can also add mavenCentral configuration to your "build.gradle" file.


Request: Show compression results

I'm a nerd for stats, I'd love to see how much was compressed and saved for each file as well as for the whole batch.

+1 for this, I love the app but always find myself manually checking the new file size!


Implement can-do-crypto for TS and mbed-crypto providers

Signed-off-by: Anton Antonov<EMAIL_ADDRESS>

For the fuzz framework failure I think you just need to run a cargo update --package psa-crypto in the fuzz/ directory as well, as it has a Cargo.lock file (it produces and runs a binary).


Make images smaller

Per favore

Sorry dude, this pull request isn't up to date and is pulling in changes I made and discarded later. The larger images look better in the readme (personal opinion but BDFL). Closing.


angular.js:10126 TypeError: Cannot read property 'once' of undefined

I just made a new project using slush. Then bower install angular-sails --save
Used your example code and error. See the gist for code and error
https://gist.github.com/misterch0c/b30aec433062cdb0c44b

What version of sails.io.js are you using?
But what is happening is sails.io.js doesn't have a .once() method so angular-sails tries to grab it from the "raw" socket that is exposed through sail.io.js, but it appears that the "raw" socket is not there.

// (from http://socket.io/download/)```
Got it from the bower install and it seems to have the `.once()` method

sails.io.js is a dependency of angular-sails and must be included.  We removed this dependency in the next version which should be released within the next month or so

Sorry that header was from the header of another sails.io.js ..
  "main": "dist/sails.io.js",
  "version": "0.11.4"```
So I ran bower update sails.io.js to get 0.11.5 but I'm still facing the same error

Because .once() is different from on and off (its not exposed directly), it is a special case and we should expose it differently.

Ok, there is a new build that has been released that should solve your issue..  The new release is 1.1.1 and you should be able to get it via bower.

Works like a charm now, thank you


Add governance transfers to rewards cards

The Chore
Filter for reward cards needs to include governance transfers
These can be identified by filter RecurringGoveranceTransfer
Tasks

[x] update queries and conditions

Additional details / background info

the thing with RecurringGovernanceTransfers is that the dispatchStrategy is null so there are fields that we’re missing to build the content of the cards

Possibly not needed after https://github.com/vegaprotocol/vega/pull/10947
RecurringTransfers should include RecurringGovernanceTransfers


[VTK 8.1.0] include dir has no vtk/ root

The VTK package's include directory is PACKAGE_ROOT/include but shouldn't it be PACKAGE_ROOT/include/vtk? I know how to fix this but is this intended behavior?
Edit: Same for libharu

+1

Hi @Dimension4, I installed vtk and libharu successfully with Visual Studio 2017 and VCPKG latest source. I found vtk and libharu package's include directory is right.

@wangli28 It also works for me, I was just not liking that the header files are located directly in the global header space so one can write #include <vtkXYZ.h> instead of #include <vtk/vtkXZY.h>. But I guess this is for compatability reasons with other libraries that expect vtk to be in the root folder.


Update Message.php

Just adding a method to add the callback url for a message as told https://github.com/Nexmo/nexmo-php/issues/32

Added tests and merged into develop. Will be in the next release.


SQLalchemy failure to connect to postgres database

This is out of the box running with docker as shown here
docker run \     -p 8000:8000 -p 3000:3000 -p 8080:8080 \     --add-host=host.docker.internal:host-gateway \     ghcr.io/rashadphz/farfalle:main
Sqlchemy fails to connect:
 sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "localhost" (::1), port 5432 failed: Connection refused backend-1   | 	Is the server running on that host and accepting TCP/IP connections? backend-1   | connection to server at "localhost" (<IP_ADDRESS>), port 5432 failed: Connection refused backend-1   | 	Is the server running on that host and accepting TCP/IP connections?

I have cloned the repo and using Groq with Bing. When I ask a query, it starts generating the answer, however, before the complete answer is generates it shows the following error.

In Inspect element -> console, it says :1 Unchecked runtime.lastError: The message port closed before a response was received.

Hmm, thats weird. Did you modify the database URL in the .env?

Did you modify the database URL in the .env?
Actually, there was a typo in db url earlier, however, I have corrected it and have double checked that I have also enabled DB_ENABLED as true. However, still now I'm getting the following error:

500: (psycopg2.OperationalError) could not translate host name "db" to address: Name or service not known (Background on this error at: https://sqlalche.me/e/20/e3q8)

Do you have the updated docker-compose.dev file?
This part is especially important:
db:
    image: postgres:15.2-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER:-postgres}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
      - POSTGRES_DB=${POSTGRES_DB:-postgres}
    ports:
      - "5432:5432"
    volumes:
      - db_volume:/var/lib/postgresql/data
    networks:
      - farfalle-network

Do you have the updated docker-compose.dev file? This part is especially important:
db:
    image: postgres:15.2-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER:-postgres}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
      - POSTGRES_DB=${POSTGRES_DB:-postgres}
    ports:
      - "5432:5432"
    volumes:
      - db_volume:/var/lib/postgresql/data
    networks:
      - farfalle-network

Please update the docker file as it is with dockerfile only we can deploy on render.


fix panic on result.Reset(nil)

I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en

Pull request type

Please check the type of change your PR introduces:

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Other information

Codecov Report

Merging #85 (5680b90) into master (b5971c6) will decrease coverage by 10.11%.
The diff coverage is 100.00%.

@@             Coverage Diff             @@
##           master      #85       +/-   ##
===========================================
- Coverage   44.06%   33.95%   -10.12%
===========================================
  Files          99       39       -60
  Lines       12118     6494     -5624
===========================================
- Hits         5340     2205     -3135
+ Misses       6487     4152     -2335
+ Partials      291      137      -154

Flag
Coverage Δ

1.16.x
33.95% <100.00%> (-9.89%)
:arrow_down:

1.17.x
33.95% <100.00%> (-10.12%)
:arrow_down:

integration
?

macOS-latest
?

ubuntu-latest
33.95% <100.00%> (-19.41%)
:arrow_down:

unit
33.95% <100.00%> (+7.91%)
:arrow_up:

windows-latest
?

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

Impacted Files
Coverage Δ

internal/table/scanner/result.go
34.44% <100.00%> (-42.83%)
:arrow_down:

internal/cluster/context.go
28.57% <0.00%> (-71.43%)
:arrow_down:

options.go
0.00% <0.00%> (-56.14%)
:arrow_down:

internal/scheme/scheme.go
0.00% <0.00%> (-55.08%)
:arrow_down:

connection.go
0.00% <0.00%> (-36.98%)
:arrow_down:

internal/errors/errors.go
0.00% <0.00%> (-36.59%)
:arrow_down:

internal/operation/params.go
0.00% <0.00%> (-36.00%)
:arrow_down:

internal/table/session.go
42.30% <0.00%> (-33.67%)
:arrow_down:

connect_params.go
11.11% <0.00%> (-33.34%)
:arrow_down:

... and 78 more

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 b5971c6...5680b90. Read the comment docs.


BoundedFloatText widget bug (GroovyAPI)

when we set a value by code the BoundedFloatText don't restrict value on groovy

Expected result should be as on python

#7830


TextBox cursor is positioned at the beginning when using a Converter that changes the text length

Describe the bug
When using the TextBox control with a Converter that changes text length, the text cursor is positioned at the beginning (i.e. SelectionStart is set to zero). An example of such a Converter can be applying a dot-decimal notation. In that case, the cursor "jumps" after a separation character is added.
Steps to reproduce the bug
public class TextToSeparatedCharsConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (value is not string text || parameter is not string separator) throw new ArgumentException();
        if (text.IsNullOrEmpty()) return string.Empty;

        var formattedChars = text.Trim().Select(c => c + separator).ToArray();
        var joinedFormattedChars = string.Join(string.Empty, formattedChars);
        var readyText = joinedFormattedChars.Remove(joinedFormattedChars.Length - (separator.Length), separator.Length);

        return readyText;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        if (value is not string text || parameter is not string separator) throw new ArgumentException();
        if (text.IsNullOrEmpty()) return string.Empty;

        return text.Replace(separator, string.Empty, StringComparison.InvariantCulture);
    }
}

<TextBox Text="{x:Bind ViewModel.ExampleText,
                       Mode=TwoWay,
                       UpdateSourceTrigger=PropertyChanged,
                       Converter={StaticResource TextToSeparatedCharsConverter},
                       ConverterParameter=.}"/>

Expected behavior
It is expected to leave the cursor where it went after a character was typed and separation added. Preferably, keep the cursor at the end if it was at the end before a text was converted.
Screenshots
No response
NuGet package version
WinUI 3 - Windows App SDK 1.2.1: 1.2.221116.1
Windows version
Windows 11 (21H2): Build 22000
Additional context
The issue also occurs for a Converter that doesn't change the text length. An example is a converter that replaces all characters with the password-like dot symbol (U+2022).

The issue isn't triaged yet. Is more information needed on it?

This behavior is by design.  If the text in a text box is replaced then we reset the  selection to the beginning of the line because we have no idea where the selection should be placed.  I suppose there could be some advanced logic written that compares the before and after strings and makes some kind of the judgements, but we don't do that currently and I doubt that we ever would.
Let's take your example.  It appears that you want to be able to type a string such as "abc" and have it show up as "a.b.c".  Seems like a valid scenario, but let's look at it in practice and what happens if the TextBox maintains the current position after the converter replaces the text.
User starts with an empty text box.  Caret at position 0 and type an 'a' putting the cursor at position 1 with text string of "a".  The converter does nothing (because there is only one character).  Textbox keeps a position of 1 and all looks good.
User types a "b".  The caret is moved to position 2 and the text becomes "ab".  This goes into the converter and comes back out as "a.b".  If the text box maintains the previous position of 2, the caret will be between the "." and the "b".  This is probably not what you want and certainly not what the user would expect.
One might argue that if the caret is at the end of the string, we might special case that and keep it there after the text is replaced.  Except, what if the converter is one that always ensures a decimal point in the number (e.g. "123" should be "123.".  In this case when the user types a "1" the converter would change it to "1." and if we followed the "leave at the end" semantic, then the next character typed by the user would be after the decimal point.  Again, probably not what is expected.
There is simply no way for the text box to know where the caret should be after the text is replaced.  So the design is, if the text is replaced (which is what a converter does), selection is reset and the caret is moved to the beginning of the string.
So how could we achieve the desired effect?
Typically, this kind of is done in the LostFocus event and not with a converter.  During the LostFocus event, the string is updated to the correct format (e.g. "abc" would be changed to "a.b.c").  Sometimes this is paired with the GotFocus event and the string is "unformatted" when the textbox receives focus.  So "a.b" would be converted to "ab" in GotFocus, and when the user is done editing it (say by changing it to "abc") then LostFocus would format it back (to "a.b.c").
If you are really looking for a dynamic interaction, rather than using a converter, you can "roll your own" semantics for how to position the caret by handling the TextChanging and SelectionChanging events.
DISCLAIMER: This code is for demonstration purposes only and is not intended to be real world code.  It most certainly needs to be tested and hardened to defects and may have performance impacts (e.g. if it were me, I would throttle the formatting updates).  This is not a recommended approach, but simple a possibility.
By creating a derived control from TextBox we can extend the functionality to provide the formatting suggested in the original post.
    public sealed class FancyTextBox : TextBox
    {
        // String to use as separator - make a dependency property if desired.
        public String Separator { get; set; }

        // Copy of the conveter used in the example to convert he strings.
        private static TextToSeparatedCharsConverter Converter = new TextToSeparatedCharsConverter();

        // Variable indicating where we want the caret to end up.  A negative value indicates
        // just leave it in its natural position.
        int forceCaretPosition = -1;
    }

Define a dependency property for the RawText (which we can use for binding):
        public static readonly DependencyProperty RawTextProperty = DependencyProperty.Register(
            "RawText", typeof(String), typeof(FancyTextBox), new PropertyMetadata(null, OnRawTextChanged));
        public String RawText
        {
            get { return (String)GetValue(RawTextProperty); }
            set { SetValue(RawTextProperty, value); }
        }
        private static void OnRawTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            // When the RawText changes we want to format it and push it into our Text property.
            ((FancyTextBox)d).FormatRawText();
        }

In the constructor, register for the events we want and do anything else we need to do:
        public FancyTextBox()
        {
            this.DefaultStyleKey = typeof(TextBox);
            TextChanging += OnTextChanging;
            SelectionChanging += OnSelectionChanging;
            Separator = ".";
        }

In the TextChanging event we to determine how (or if) it will affect our raw text and then ensure that our text is still in the property format.
        private void OnTextChanging(TextBox sender, TextBoxTextChangingEventArgs args)
        {
            // Start by assuming that we will not change the caret position
            forceCaretPosition = -1;

            // If it is only a format change, we don't need to do anything.
            if (!args.IsContentChanging) return;

            // What will the change do to our raw text?
            var rawText = (String)Converter.ConvertBack(Text, typeof(String), Separator, null);
            if (rawText == RawText)
            {
                // The raw text hasn't changed, but we want to reformat it (since the user could have,
                // for example, deleted a separator and we want to add it back).
                FormatRawText();
            }
            else
            {
                // Update the raw text and let it request that it be reformatted.
                RawText = rawText;

            }
        }

We then want to intercept the selection change back to the front of the string and insert our own if necessary:
        private void OnSelectionChanging(TextBox sender, TextBoxSelectionChangingEventArgs args)
        {
            // If we are forcing the caret position, do it here
            if (forceCaretPosition >= 0)
            {
                SelectionStart = forceCaretPosition;
                SelectionLength = 0;
                forceCaretPosition = -1;
            }
        }

And this is the workhorse function that will take our raw data, reformat it, determine where the next caret position should be and request that it be put there.
        private void FormatRawText()
        {
            int caretPosition = SelectionStart;
            int characterAfterCaret = Text.Length - caretPosition;
            string newText = (String)Converter.Convert(RawText, typeof(String), Separator, null);

            if (newText != Text)
            {
                if (characterAfterCaret > newText.Length)
                {
                    // If our text has gotten smaller then we will have truncated from the end of the string, so just put the
                    // caret there.
                    forceCaretPosition = newText.Length;
                }
                else if (newText.Substring(newText.Length - characterAfterCaret) == Text.Substring(Text.Length - characterAfterCaret))
                {
                    //  If all the characters following the insertion point are the same, then we will just move to the
                    //  equivalent insertion point.
                    forceCaretPosition = newText.Length - characterAfterCaret;

                    // But, if we also inserted a separator at that spot, then make sure we are before that.
                    if (forceCaretPosition >= Separator.Length &&
                       newText.Substring(forceCaretPosition - Separator.Length, Separator.Length) == Separator)
                    {
                        forceCaretPosition -= Separator.Length;
                    }
                }
                Text = newText;
            }
         }

Then hook it up:
<local:FancyTextBox RawText="{x:Bind ViewModel.ExampleText, Mode=TwoWay}"/>

This gives you a working version of what it seem like you were attempting to do.  Note though that when getting this fancy, it is going to be hard to get right and performant.  It was mentioned above that some throttling might be needed if the user is rapidly updating the text (e.g. holding down a key to get it to repeat).  In addition, there will be corner cases or additional customizations that might be needed.  For example, do you really want the deletion of a separator character in the text box to appear to do nothing?  Do you want a different caret position depending on the direction the user is moving (e.g. if they use a delete key as opposed the backspace key).  These are all the kinds of things that need to be considered.  And that is before we even get to globalization and IMEs and multi keystroke characters.
With all that, and given there are also a lot of assumptions in the code above as to what the converter will do to the text, this is not a feature that would be able to be implemented in a generic, robust and performant manner.  Hence, we are going to close this issue as by design.


RVL-101/RVL-201/WUP-101 tracking issue

[x] #12
[x] #18
[x] #23

Closing this even if this was only tested on an RVL-001 with no disc and no memory card.


Add summary utility functions

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

Project coverage is 99.91%. Comparing base (5ac095f) to head (39b675b).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #107   +/-   ##
=======================================
  Coverage   99.91%   99.91%
=======================================
  Files          60       60
  Lines        1187     1195    +8
  Branches      102      102
=======================================
+ Hits         1186     1194    +8
  Partials        1        1

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


Renderdoc injection fails when using address sanitizer -fsanitize

Description
Renderdoc injection fails when using address sanitizer with GCC 8.2.1 (at least) on Linux.
Repro steps
Given a basic OpenGL program, such as a Hello Triangle program, compile it with -fsanitize=address and link with asan compiling with GCC. When trying to launch Renderdoc, the injection will fail.
Probably the same will happen using Clang and other versions of GCC too.

Environment

RenderDoc build: 1.2
Operating System: Arch Linux
API: OpenGL

When I did this I got this error from ASan:
==26122==ASan runtime does not come first in initial library list; you should
either link runtime to your application or manually preload it with LD_PRELOAD.

Which suggests that libasan expects to be the first library loaded, and with an otherwise empty LD_PRELOAD then RenderDoc injecting its library first via LD_PRELOAD breaks that assumption.
As suggested in that error I configured LD_PRELOAD to point to libasan.so in RenderDoc before launching the program, and that then worked fine. From a quick google search for the error it seems like an alternate solution is to specify -static-libasan when linking the program itself which also seems to work for me, but YMMV.
In general though I would not be surprised to see more subtle bad interactions between these tools since they may fight over trying to do the same thing. I would strongly recommend against trying to use them both together, and only use RenderDoc on builds without sanitizers enabled.