SEO record

The SOA record is currently not supported by OctoDNS, the code states "would it even make sense?". I'm not aware if different providers support this record type in their API's but I think it would be best to keep records in sync where possible unless you have a good reason to keep them out of sync.
Comparing the SOA record for GitHub they don't match:
$ dig github.com @ns-1283.awsdns-32.org. SOA +short
ns-1707.awsdns-21.co.uk. awsdns-hostmaster.amazon.com. 1 7200<PHONE_NUMBER> 86400

$ dig github.com @ns1.p16.dynect.net. SOA +short
ns1.p16.dynect.net. hostmaster.github.com.<PHONE_NUMBER> 3600 600 604800 60

As reference the SOA record format:
primary ns; contact mail; serial number; refresh; retry; expiry; ttl

It probably doesn't matter who is listed as the primary nameserver for normal operation. While some DNS providers could rely on the primary nameserver for synchronization and want to have their own primary listed? As the name servers of different providers are intentionally not linked it should not cause any problems and it does indicate the clear separated operations.
The contact is set directly to GitHub at Dyn but for AWS it's not, the serial is different where this should normally be in sync for a normal setup. As the name servers are not linked and are not doing any zone transfers it should not cause any problems to have a different serial number (but could it hurt?).
The remaining SOA information (zone defaults) for refresh, retry, expiry and ttl is something I would like to keep in sync between my providers.

I'm not aware if different providers support this record type in their API's but I think it would be best to keep records in sync where possible unless you have a good reason to keep them out of sync.

Similar to zone NS records early investigation showed management quirks around SOA record management across various providers and the decision was made to punt on managing them.

the serial is different where this should normally be in sync for a normal setup. As the name servers are not linked and are not doing any zone transfers it should not cause any problems to have a different serial number (but could it hurt?).

Yeah, serial is interesting. We do zone transfers in our internal setup, more coming soon in the previously mentioned blog post. For that is seems to be critical that each source/provider has a consistent serial, but not necessarily that they're consistent across them.

The remaining SOA information (zone defaults) for refresh, retry, expiry and ttl is something I would like to keep in sync between my providers.

Makes sense. By no means opposed to having support for SOA records so that these things can be managed and kept in sync, just something that was skipped due to being a bit more involved than normal records and not a super high priority for us. PRs welcome :grin:

Same problem here.
An external check, using mxtoolbox.com/domain/tracktunes.org for my domain reports that there is a problem with DNS, the complaint is Serial numbers do not match and they say it's a problem with SOA records not matching.
When I check on the serial number, it comes up as "1".  Here's an nslookup transcript:
<EMAIL_ADDRESS>nslookup
> set type=soa
> tracktunes.org
Server:		<IP_ADDRESS>
Address:	<IP_ADDRESS>#53

Non-authoritative answer:
tracktunes.org	canonical name = tracktunes.github.io.

Authoritative answers can be found from:
github.io
	origin = ns-1622.awsdns-10.co.uk
	mail addr = awsdns-hostmaster.amazon.com
	serial = 1
	refresh = 7200
	retry = 900
	expire = 1209600
	minimum = 86400

Having different serials won't cause an issue.
The serials are only used during zone transfers to know if the zone is up to date or needs to be updated. Using OctoDNS there will inherently be different serials between providers because each provider might use a different format, changes will be made at different times, etc.
However if you were using zone transfer between providers, then you wouldn't need to use OctoDNS to manage the secondary providers, you would just use it with the first one.


More Tooling for Static Analysis of Pages

Motivation
I'm building a blog, and I want to be able to show a listing page that links to all pages within a posts directory.
Problem
Since posts are just pages, I can theoretically generate a list of page-metadata statically at build-time--I've tested this with import.meta.glob, and it works mostly fine, but I have to manually construct links from the filenames, which is brittle since it's bypassing any custom routing functionality I may create in the future:
async function getPosts(): Promise<PostMetadata[]> {
  const files = import.meta.globEager('/pages/posts/**/*.page.*([a-zA-Z0-9])');
  return map(files, (file, path) => {
    const { title, publishedAt } = file;
    return {
      publishedAt,
      title,
      url: path.replace('index.page.tsx', '').replace('pages/', ''),
    };
  });
}

Obviously I could manually create this list of URLs, but I've found even this hacky solution to be extremely nice from a developer-experience perspective, and would like to see some tooling to support this further.
Proposed solution
Expose an API for accessing routing details for all pre-rendered pages. It seems there may potentially be some overlap with https://github.com/brillout/vite-plugin-ssr/issues/49 here. I'm actually not sure if this is potentially an intractable problem, since this would require knowledge of all pages that will be prerendered (and what their routes would look like) before prerender hooks are called.

I agree there should be an API for that.
In the meantime, have you seen pageContext._pageRoutes? You still have to manually determine the URLs but it will at least provide you with a consistent list of page IDs and their routes.
But a non-internal and higher-level API should be made available to users. E.g.
type PageInstance = {
  url: string,
  pageContext: {
    Page: ReactComponent | VueComponent | unknown
    pageExports: Record<string, unknown>
    // ...
  }
}

const pageInstances: PageInstance[] =
  // `partial: true`: disable `vite-plugin-ssr` warning upon dynamic routes (which cannot be resolved
  //                  without the user providing a list of URLs).
  // `loadPageContext: true` => loads all `.page.js` files
  // `loadPageContext: false` => only loads the `.page.route.js` files
  await pageContext.getPageInstances({ partial: true, loadPageContext: true })

Yeah, I saw _pageRoutes, I'll check that out. The only gap with that approach is that pageContext isn't passed to prerender. I assume that it's not passed for good reason, but does that mean that this approach will only work for SSR and not SSG?

I don't see a use case for accessing pageContext.getPageInstances() in prerender() hooks.
If loadPageContext: true then getPageInstances() calls all prerender() hooks.
This means that your sitemap.page.js can call getPageInstances({ loadPageContext: true }) and get the same list of page instances than SSG.

Thanks for pointing that out, because it made me realize I was doing something silly, which was using prerender as a proxy for PROD to omit draft post links during prerendering:
// getPosts.ts
async function getPosts(includeUnpublished?: boolean): Promise<PostMetadata[]> {
  const files = import.meta.globEager('/pages/posts/**/*.page.*([a-zA-Z0-9])');
  const all = map(files, (file, path) => {
    const { title, teaser, posterURL, publishedAt } = file;
    return {
      publishedAt,
      teaser,
      posterURL,
      title,
      url: path.replace('index.page.tsx', '').replace('pages/', ''),
    };
  });

  return includeUnpublished
    ? all
    : all.filter(({ publishedAt }) => !!publishedAt);
}

// index.page.server.ts
export { prerender, onBeforeRender };

async function onBeforeRender(pageContext: PageContext) {
  const includeUnpublished = true;
  const posts = await getPosts(includeUnpublished);
  return {
    pageContext: {
      pageProps: {
        ...pageContext.pageProps,
        posts,
      },
    },
  };
}

async function prerender() {
  const includeUnpublished = false;
  const posts = await getPosts(includeUnpublished);
  return {
    url: '/',
    pageContext: {
      pageProps: {
        posts,
      },
    },
  };
}

I updated to a better pattern that no longer requires defining a custom prerender:
// index.page.server.ts
export { onBeforeRender };

async function onBeforeRender(pageContext: PageContext) {
  const includeUnpublished = !import.meta.env.PROD;
  const posts = await getPosts(includeUnpublished);
  return {
    pageContext: {
      pageProps: {
        ...pageContext.pageProps,
        posts,
      },
    },
  };
}

Is there any way I can map _pageRoutes.pageId to filePaths?
Currently pageContext._pageRoutes contains a list with {pageId, fileSystemRoute, pageRouteFile}
where as pageContext._allPageFiles contains a list with {filePath, loadFile}.
Currently I'm using condition like filePath.startsWith(pageId) to determine the filePath corresponds to pageId.
I think filePath can also be added to pageContext._pageRoutes.

@naveennamani What is it you want to achieve?

In some of my pages I'm exporting some metadata and urls of related pages (same as fileSystemRoute in pageContext._pageRoutes). In onBeforeRender hook, I wanted to load metadata of the related pages. Current I was able to figure out pageId of the url by filtering pageContext._pageRoutes. And also, I was able to use loadFile function in pageContext._allPageFiles[".page"] to obtain the pageExports of a .page file I'm interested in. But I was unable to link pageId from pageContext._pageRoutes with filePath from pageContext._allPageFiles.
This is the code I'm currently using
export function onBeforeRender(pageContext) {
  const {_pageRoutes, _allPageFiles, pageExports: {relatedArticles} } = pageContext;
  // search for relatedArticles[0]
 const {pageId, fileSystemRoute} = _pageRoutes.filter(({pageId, fileSystemRoute})=>fileSystemRoute===relatedArticle[0])[0];
 // search for matching filePath
 const {filePath, loadFile} = _allPageFiles[".page"].filter(({filePath, loadFile})=>filePath.startsWith(pageId))[0];
 const {Page, metaData} = await loadFile();
  return { pageContext: {relatedArticles: { metaData}} }
}

Currently I'm using filePath.startsWith(pageId) to check for the filePath corresponding to a fileId.
I'll try to give a working example if you require further details.

In general, eagerly loading pages is an anti-pattern for performance & scalability; it goes against Vite's lazy-transpiling approach.
An alternative is to use https://github.com/antfu/vite-plugin-glob with a custom transformer (see https://github.com/antfu/vite-plugin-glob#custom-queries). The transformer would extract the meta data in a performant way. That way we can get meta data
for all pages and stay performant & scalable.


request progress?

I have seen the issue at #82 if for example I have these codes
axios.post('./api/test', {
	name: 'fred'
})
.then(response => {
	console.log(response.data);
});

Is there any way to find out the current progress of the request? I need it for a customized loading bar. It would be great if I could get it on percentage or if not I could simply get a value that I can use to find out how much progress has pass.

I figured it out. So I can also use the onUploadProgress.

@four-eyes-04-04 How did you use the method to Show the progress, an example please!

@slim12kg
let config = {
  onUploadProgress: progressEvent => {
    let percentCompleted = Math.floor((progressEvent.loaded * 100) / progressEvent.total);
    // do whatever you like with the percentage complete
    // maybe dispatch an action that will update a progress bar or something
  }
}

axios.post('/path/to/post/', data, config)
        .then(response => console.log(response));

Depending on the way you coded your project it may change, if my code confuses you, please don't hesitate to ask me more and I will gladly help as soon as I read your response. You're welcome.

Thanks for the help

Any way to determine the download progress of a request?

@PierBover Use onDownloadProgress instead of onUploadProgress. Found it in the Request Config section here https://github.com/mzabriskie/axios.
Hope this helps!

How can I track the complete progress from 0 - 100%? I always got 0 or Nan and 100

Hi all! Is it possible to onDownloadProgress with the axios.all function?

@jcmidia download is handled by the browser, right?

Hey guys, you can use the intercetor if you want to handle this in a global form. Like so:
import Axios from 'axios';

function onUploadProgress (ev) {
  console.log(ev);
  // do your thing here
}

function handleUploadProgress (ev) {
  console.log(ev);
  // do your thing here
}

Axios.interceptors.request.use(config => {
  ...config,
  onUploadProgress,
  onDownloadProgress
});

Add those codes on your entry file, then on your other files (views or components):
aFile.js
import Axios from 'axios';

function makeRequest () {
  axios.get('/to/path')
  .then(({ data })=> {
    console.log(data);
  });
}

anotherFile.js
import Axios from 'axios';

function makeRequest () {
  axios.post('/to/path', data, yourConfigIfAny)
  .then(({ data }) => {
    console.log(data);
  });
}

get use the onDownloadProgress, other requests use the onUploadProgress. (Please mention me for any corrections)
There's a trade off to this. If you sent multiple requests it would be up to you to maybe sum their total and their loaded to get the total percentage of the progress.
You can modify the code above a little bit to be more flexible like so:
import Axios from 'axios';

function onUploadProgress (ev) {
  console.log(ev);
  // do your thing here
}

function handleUploadProgress (ev) {
  console.log(ev);
  // do your thing here
}

Axios.interceptors.request.use(config => {
  ...config,
  onUploadProgress: config.onUploadProgress || onUploadProgress,
  onDownloadProgress: config.onDownloadProgress || onDownloadProgress
});

Now you can provide a custom onUploadProgress and onDownloadProgress handler, it will adjust accordingly.
import Axios from 'axios';

function customOnUploadProgress (ev) {
  console.log('customOnUploadProgress', ev);
}

function makeRequest () {
  axios.post('/to/path', data, {
    onUploadProgress: customOnUploadProgress
  })
  .then(({ data }) => {
    console.log(data);
  });
}

Hi guys.  I followed what you told us, but sadly, just like @jayzyaj , I'm always getting "100" as a result, both on upload/download.  Do you know where that could come from?  My code is very similar to @aprilmintacpineda , an interceptor, and then I just copied/pasted the 2 functions.

Only 100% can be fired in case your upload files are too small, or download/upload speed is too fast. Try to upload 10mb file maybe.
Also same issue for me was solved with
  upload: data => axios.post(    "api/",     data,     {       headers: { 'Content-Type': 'multipart/form-data' },       onUploadProgress: (progressEvent) => {         const percentCompleted = Math.floor((progressEvent.loaded * 100) / progressEvent.total);         // dispatch       },     },   ), };
configuring axios requests with object was an issue, as "axios({method: "", confing: {}, data: data})"

Hi, how to use this code ?
Thank you

Hi, I need to show the download progress.... I have my logic written in JSP file... ho do I write it in react?
PFB the code:
        $.ajax({
            xhr: function() {
                var xhr = new window.XMLHttpRequest();
                //Download progress
                xhr.addEventListener("progress", function(evt) {
                    if (evt.lengthComputable) {
                        dataloaded = evt.loaded;
                    }
                }, false);
                return xhr;
            },

            type: 'GET',
            url: urlForDownload,
            cache: false,
            beforeSend: function() {
                startTime = (new Date()).getTime();
				 start = startTime;
            },
            timeout: timeOutValue,
            complete: function() {
                end = new Date().getTime();
				var totalTime = end - startTime;

                arrTime.push((totalTime));
                arrData.push((dataloaded));
                processing += 12;
                progressBarInc(processing);
                d3.resolve("asda");

            }
        });


Implement a first time setup wizard

Currently there are a bunch of hard coded things that require manual setup, the setup wizard should automate this process in an interactive manner. The following should be collected:

db type (sqlite, mysql, postgresdb)
db location (path, socket, etc)
github user to be admin
github API key (secret and user) - currently in .env file
google analytics key

done as of: https://github.com/compscidr/goblog/commit/7c8f711a11c9bc3fadc22946db9815c66bf19292


Add bundle exec to readme in section for running tests

When running rake test, one test keeps failing, complaining that it doesn't have access to the Friends::POST_INSTALL_MESSAGE module. However, when running bundle exec rake test, the test does not fail. I suspect this is because using bundle exec loads the gemspec which itself includes the module explicitly (via require "friends/post_install_message").
I have therefore updated the readme to use bundle exec rake test when running tests :)

Hi there! Thanks so much for submitting a pull request!
Let's just make sure together that all of these boxes are checked before we
merge this change:

[ ] The code in these changes works correctly.
[ ] Code has tests as appropriate.
[ ] Code has been reviewed by @JacobEvelyn.
[ ] All tests pass on Travis CI.
[ ] Code coverage remains high.
[ ] Rubocop reports no issues on Travis CI.
[ ] The README.md file is updated as appropriate.

Don't worry—this list will get checked off in no time!

Hey @JacobEvelyn, I'll look into the failing build - I'm surprised as it was only a simple readme change 🤔

Thanks, @shen-sat! I don't think the failing test is related to your change; my guess is a dependency got updated since the last time code merged to master that is breaking something. I'll dig into that!

@shen-sat if you rebase this commit on top of the latest master tests should pass!

@JacobEvelyn this looks good to merge..? :)

Yikes, sorry I missed this! Merged! Congrats on becoming an official committer!

🙌🏾


coreos/azure: Updates for v1.2

xref https://github.com/kubernetes/kubernetes/pull/23818

@johndmulhausen ping

Nicely done/written! No complaints here except for the nit. Ready for a tech review.

@johndmulhausen I've address the typo you pointed at :)

This is clean-up commit, does anyone have concerns about removing this or moving it into a separate repo?

@johndmulhausen ping.

I've rebase this. The diff is still a little obscured by EOL changes, but you can look at it here https://github.com/kubernetes/kubernetes.github.io/pull/314/commits/572bd36791b501816deb857a9ead7cd28b405bb6?w=1

The kubernetes/kubernetes#23818 is stalled, it'd be great to get that merged - it's just a clean-up.

@pwittrock yes please, and https://github.com/kubernetes/kubernetes/pull/23818.

@errordeveloper SGTM.  Would you rebase and I will merge?

@pwittrock rebased.

@errordeveloper LGTM.


Remove progress bar when playing livestream?

Hello can someone tell me how do i hide the progress bar and show something like 'live' text instead?
Thank you!

Add this to your CSS, or use a style tag on your page.
.plyr__progress {         opacity: 0; }


v.literal should accept spread arguments

Today:
const T = v.union(v.literal('a'), v.literal('b'), v.literal('c'));

Tomorrow:
const T = v.literal('a', 'b', 'c');

how about calling it literals ?
import * as v from '@badrap/valita';

const A = v.literals('a', 'b');
// equivalent to
const B = v.union(v.literal('a'), v.literal('b'));

I personally dislike it, current .union is much more generic, than function that can only handle strings. You can easllily make own helper for this single case.
const TYPES = {
	first: '__first',
	second: '__second',
} as const;

export function fromConst<T extends string>(input: Record<string, T>) {
	const literals = Object.values(input).map((type) => v.literal(type));
	return v.union(...literals);
}

const types = fromConst(TYPES);

type x = v.Infer<typeof types>;
//   ^ '__first' | '__second'

@dimatakoy - your example doesn't really capture my intent.
This is what I add to my projects that use valita:
export const vLiterals = <L extends string | boolean | number>(...literals: L[]) =>
  v.union(...literals.map(l => v.literal(l))) as v.Type<L>

const vOneOrHello = vLiterals(1,'hello');
type OneOrHello = v.Infer<typeof vOneOrHello> // 1 | 'hello'

it works as you'd expect, this is a QOL change for valita, not a whole new type parser, under the hood it's just a union parser of literal parsers, which you would have to write anyway. I'm suggesting that valita includes it because it's simple and useful.


Maximum Sum Circular Subarray

Question Link
https://leetcode.com/problems/maximum-sum-circular-subarray/

@piyushsharma220699  Please assign me this issue in C++

Adding Code in C++.
problem link :https://leetcode.com/problems/maximum-sum-circular-subarray/
Please Assign it to me .

As @rachana-singh27 created the issue and asked to solve it in C++ first, the issue gets assigned to her :) @sahilahmed24 Sorry brother!

Adding Code in JAVA.
problem link :https://leetcode.com/problems/maximum-sum-circular-subarray/
Please Assign it to me :)

@sahilahmed24 Assigned in Java


Remove Growl from VBA flow, for non-server errors

Details
Removes the Growl for non-server errors, as these are displayed in the error Modal. Server errors are not yet displayed in the error Modal, so we need to continue to show with the Growl.
Fixed Issues
$ https://github.com/Expensify/Expensify/issues/175331
Tests
0) Test Setup

Create a new user
From the global create menu, tap 'New Workspace', then the 'Get Started' button
Tap 'Connect Manually' and use the data from this StackOverflow post to fill the Routing and Account number

1) Verify that Modal validation errors DO NOT show as a Growl

Using the stack overflow post, fill each field except 'Company Website', leave that as https://
Hit 'Save & Continue'
You should see the Company Website field highlighted red with an error message
You should see a Modal popup with an error message
You should NOT see a Growl with the same message

2) Verify that server errors DO show as a Growl

Continue from the end of test 1
Enter a valid website
Set the 'Phone Number' field to  12345678
Hit 'Save & Continue'
You should see a Growl with an error message
You should NOT see the field highlighted red
You should NOT see a Modal popup

2) Verify that unhandled validation errors DO show as a Growl

Continue from the end of test 2
Enter valid information in every field
Hit 'Save & Continue'
At the 'Requestor Information' step, enter first and second name only
Hit 'Save & Continue'
Fix each error one by one, ensure a Growl message shows for each
These will be changed to Modal validation in a separate issue

QA Steps
Run above tests
Tested On

[x] Web
[ ] Mobile Web
[x] Desktop
[x] iOS
[x] Android

Screenshots
Web

Mobile Web
Desktop

iOS

Android

🚀 Deployed to staging by @nkuoch in version: 1.0.88-3 🚀

platform
result

🤖 android 🤖
cancelled 🔪

🖥 desktop 🖥
cancelled 🔪

🍎 iOS 🍎
cancelled 🔪

🕸 web 🕸
success ✅

🚀 Deployed to production by @roryabraham in version: 1.0.90-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


Fix the dashboard and add cache for requests

Coverage report

This PR does not seem to contain any modification to coverable code.


Generating proposals.h5

Hello,
I'm trying to generate the proposals.h5 and am using this python script as mentioned in other issues:
https://github.com/rbgirshick/py-faster-rcnn/blob/master/tools/rpn_generate.py
I have been using the mini_proposals.h5 file as a template for creating the necessary datasets and I've needed to modify this rpn_generate.py script extensively to create this h5 file.  There appear to be 5 datasets which need to be generated:

im_scales
im_to_roi_idx
num_rois
rpn_rois
rpn_scores

I guess my question is, are all these datasets really required?  I'm kinda hoping that im_scales wouldn't be necessary and I don't think it's used.
Thanks.

Hey chrishuawei4 and danfeiX,
How are you calculating the im_scales dataset? From py-faster-rcnn, it appears that im_scale is calculated with: float(target_size) / float(im_size_min), where target_size is by default 600 and im_size_min is the smaller of width/height dimensions.
That is how I am currently calculating im_scales, but when I compare the same images I've processed with those in mini_proposals.h5, I am not getting the same im_scales (though the boundary boxes (rpn_rois) are rpn_scores are comparable)
Any thoughts would be helpful, thank you!


Issue with Filament form re-rendering on Livewire component update.

Package
filament/forms
Package Version
v3.2.11
Laravel Version
v10.41
Livewire Version
v3.3.5, 3.4
PHP Version
PHP 8.2.12
Problem description
I'm encountering a strange issue where a given Filament form doesn't re-render when I expect it to in certain situations.
Given the following Livewire component:
<?php

namespace App\Livewire;

use Filament\Forms\Components\TextInput;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Form;
use Livewire\Component;

/**
 * @property Form $form
 */
class TestForm extends Component implements HasForms
{
    use InteractsWithForms;

    public bool $codeRequested = false;

    public ?array $data = [];

    public function mount(): void
    {
        $this->form->fill();
    }

    public function form(Form $form): Form
    {
        return $form
            ->schema([
                TextInput::make('name')->required()->hidden($this->codeRequested),
                TextInput::make('phone')->required()->hidden($this->codeRequested),
                TextInput::make('code')
                    ->required($this->codeRequested)
                    ->visible($this->codeRequested),
            ])
            ->statePath('data');
    }

    public function handle()
    {
        $this->codeRequested = true;
    }

    public function render()
    {
        return view('livewire.test-form');
    }
}

...with the following template:

    <form wire:submit="handle" class="flex flex-col gap-8">

{{ $this->form }}

        <x-filament::button type="submit">Submit form</x-filament::button>
    </form>

...I expect the name and phone fields to disappear, and the code field to appear when I submit the form. Instead what happens is the component update request is sent (with property update values for name and phone), but the HTML contents of the component are not updated. If I then submit the form again the expected change happens, except this time when inspecting the component update request there are no update values for name and phone.
Here's a video of the issue:
https://github.com/filamentphp/filament/assets/6180087/9cbafed3-31ac-4e04-8e24-beb78fff4e6d
Expected behavior
The form should update correctly
Steps to reproduce
See above, and the reproduction repository.
Reproduction repository
https://github.com/panda-madness/filament-form-bug-reproduction
Relevant log output
No response

Caleb tagge Livewire 3.4 just as I was creating this issue, so I tested it with that version as well and the issue is still present.

This is a slightly better video showing the network request contents.
https://github.com/filamentphp/filament/assets/6180087/dcbc9cc0-6193-4bdd-9bd6-1480aad91dde

Replace $this->codeRequested with fn () => $this->codeRequested to defer the property getting accessed until after the form is cached


OpenPGP implementation issue : should reject unsupported curves

There's an OpenPGP implementation issue in this app. I'm adding OpenPGP devices using the OpenPGPpy library, in the uniblow wallet. And I faced a strange behavior.
Here's a little recap on how I found out this issue :
I can't make the SIG key generation work. It works well for the ENC key there, but no luck with the SIG key. When generating a key, there is always this error message "no data found in this slot".
I seek at 2 points where the issue can be :

An issue in the OID decoding or matching regarding 256k1 OID
The variable where the public key is read just after the generation might be keygpg->pub_key.ecfp and not keygpg->pub_key.ecfp256 on lines 258-277 in gpg_gen.c

ECDSA with secp256k1 works perfectly on a Yubico 5.
Also, as the developer of this current app is using it "day to day with ed-25519", I checked with this setting, and it works right with Ed25519 SIG key generation (curve OID <IP_ADDRESS>.4.1.11591.15.1 = h"2B060104019755010501").
So, there's an issue with others curves. Either when reading OID code (function gpg_oid2curve), or when reading the associated public key (keygpg->pub_key.ecfp256).
Finally, I found out that many curves are commented, including the 256k1 curve. This appears to be like this from the very start of this app, 4 years ago. No. This comes from this October 2018 commit, where the author "removed code belonging  curves other than Ed25519/NISTP256", leaving only Ed/X25519 and 256r1 curves.
So the issue is not about the "reference not found issue", but the command before, when we setup the key slot, and the app responds OK. It should responds not supported by using the status code "incorrect data". The app blindly copies the data given for the key algorithm to use, and checks it only during the generation of the key. During this generation, if the algorithm data setup is not correct, not recognized, then it throws the key slot is not found.
But this is incorrect, as the OpenPGP 3.3.1 standard states the app "should reject unsupported values in the data [algorithm attributes] object" (§<IP_ADDRESS> Algorithm Attributes). This is the way the computer software knows that this algorithm desired (sent in the C1 DO writing) will not work and the app is not compatible with this algorithm.
Here's the OpenPGPpy debug output annotated :

 - Ledger Nano X 0

Select App
 Sending 0xA4 command with 6 bytes data
-> 00 A4 04 00 06 D2 76 00 01 24 01
 Received 0 bytes data : SW 0x9000 - duration: 5.0 ms

An OpenPGP applet detected, using Ledger Nano X 0

Get Application Related Data
Read Data  in 0x006E
Sending 0xCA command with 0 bytes data
-> 00 CA 00 6E 00
 Received 233 bytes data : SW 0x9000 - duration: 23.9 ms
<- 4F 10 D2 76 00 01 24 01 03 03 2C 97 C8 A5 42 41 00 00 5F 52 0F 00 31 C5 73 C0 01 80 07 90 00 00 00 00 00 00 7F 66 08 02 02 00 FE 02 02 00 FE 73 81 B7 C0 0A 7E 00 00 FE 0A 00 02 00 00 01 C1 06 01 08 00 00 20 01 C2 06 01 08 00 00 20 01 C3 06 01 08 00 00 20 01 C4 07 01 0C 0C 0C 03 00 03 C5 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C6 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CD 0C 00 00 00 00 00 00 00 00 00 00 00 00

Get Full Application Identifier
Read Data  in 0x004F
 Sending 0xCA command with 0 bytes data
-> 00 CA 00 4F 00
 Received 16 bytes data : SW 0x9000 - duration: 12.0 ms
<- D2 76 00 01 24 01 03 03 2C 97 xx xx xx xx 00 00

Get Extended Length info
Read Data  in 0x7F66
 Sending 0xCA command with 0 bytes data
-> 00 CA 7F 66 00
 Received 8 bytes data : SW 0x9000 - duration: 4.0 ms
<- 02 02 00 FE 02 02 00 FE

Get optional features
Read Data  in 0x7F74
 Sending 0xCA command with 0 bytes data
-> 00 CA 7F 74 00
 Received 0 bytes data : SW 0x6A88 - duration: 4.0 ms

Read public key : SIG key = 0xB600
Sending 0x47 command with 2 bytes data
-> 00 47 81 00 02 B6 00
 Received 0 bytes data : SW 0x6A88 - duration: 5.0 ms
No existing key -> Need to generate one

send "admin PIN", PIN3
 Sending 0x20 command with 8 bytes data
-> 00 20 00 83 08 31 32 33 34 35 36 37 38
 Received 0 bytes data : SW 0x9000 - duration: 15.4 ms

Set SIG key C1 as ECP256k1, EC with OID = <IP_ADDRESS>.10
Put data h132B8104000A in 0x00C1
 Sending 0xDA command with 6 bytes data
-> 00 DA 00 C1 06 13 2B 81 04 00 0A
 Received 0 bytes data : SW 0x9000 - duration: 9.0 ms <- Issue is actually here
Card should throw 0x6A80 status word "incorrect data parameter" to signal the desired algorithm for this key slot is not valid.

Generates Assymetric Key, SIG key = B600
 Sending 0x47 command with 2 bytes data
-> 00 47 80 00 02 B6 00
 Received 0 bytes data : SW 0x6A88 - duration: 4.6 ms
-> Error status : 0x6A88
REFERENCED DATA NOT FOUND, unexplained error

For the fun and as a demonstration of the issue, I sent the encoded OID = "FUCK_OFF"
Put data "x\13FUCK_OFF" in 0x00C1
Sending 0xDA command with 9 bytes data
-> 00 DA 00 C1 09 13 46 55 43 4B 5F 30 46 46
Received 0 bytes data : SW 0x9000 - duration: 12.3 ms
Reading the Application Related Data Object
Read Data  in 0x006E
Sending 0xCA command
-> 00 CA 00 6E 00
Received 236 bytes data : SW 0x9000 - duration: 30.1 ms
<- 4F 10 D2 76 00 01 24 01 03 03 2C 97 FC 92 1A 89 00 00 5F 52 0F 00 31 C5 73 C0 01 80 07 90 00 00 00 00 00 00 7F 66 08 02 02 00 FE 02 02 00 FE 73 81 BA C0 0A 7E 00 00 FE 0A 00 02 00 00 01 C1 09 13 46 55 43 4B 5F 30 46 46 C2 06 01 08 00 00 20 01 C3 06 01 08 00 00 20 01 C4 07 01 0C 0C 0C 03 00 03 C5 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C6 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CD 0C 00 00 00 00 00 00 00 00 00 00 00 00
The app responds "OK I copied this data in the SIG key algorithm attributes", and is very rude when one reads the data, in the C1 DO.
I suggest to enforce the OID check during the PUT DATA C1/2/3 command. That means calling gpg_oid2curve with the data, and checking whether it returns CX_CURVE_NONE or not. basically, this is a copy/paste from the code in GENERATE command, where it reads and checks the setup OID during this command. One must add something like this around these lines, for each C1-2-3 slots :
curve = gpg_oid2curve(data...);
if (curve == CX_CURVE_NONE) { // or !=

I also suggest to check data length bound and consistency with data provided, before writing in the memory.
Then, what is the rational of having the 256k1 and others curves not supported by the app? Why curves other than Ed25519/NISTP256 were removed at some point? Can they be activated easily? by just removing the comment?
By the way, there is a typo in this code comment (384r1)
As we're here to check OID information by the app (at least during the right stage), one has to consider there are 2 different 25519 curves. To start, the second curve comment is not updated with the correct OID : <IP_ADDRESS>.4.1.3<IP_ADDRESS>.
First comment ..15.1 is mostly correct : Twisted Edwards Curve 25519 for Ed25519
Second comment ...1.5.1 is not correct, as this is the Montgomery Curve25519 for X25519 (not Ed25519)
This code comments should be :
// "twisted" curve25519 for Ed25519 : <IP_ADDRESS>.4.1.11591.15.1
const unsigned char C_OID_Ed25519[9] = {
    0x2B, 0x06, 0x01, 0x04, 0x01, 0xDA, 0x47, 0x0F, 0x01,
};

// curve25519 for X25519 : <IP_ADDRESS>.4.1.3<IP_ADDRESS>
const unsigned char C_OID_cv25519[10] = {
    0x2B, 0x06, 0x01, 0x04, 0x01, 0x97, 0x55, 0x01, 0x05, 0x01,
};

And then the app should check the correct curve parameter for the right key. That means <IP_ADDRESS>.4.1.11591.15.1 for Ref1 C1 (B6/SIG/CDS key) and Ref3 C3 (A4/AUT key) slots, and use <IP_ADDRESS>.4.1.3<IP_ADDRESS> for Ref2 C2 (B8/ENC/DEC key) slot.

curve \ slot
C1
C2
C3

Ed25519
OK
X
OK

X25519
X
OK
X

OK : PUT DATA in key slot performed and 0x9000 "OK"
X : PUT DATA in key slot rejected with 0x6A80 "incorrect data"
And the same applies for all algorithms: ECDSA for C1 and C3, RSA for C1, C2 and C3.
I'm thinking of a practical approach would be to add a second argument input describing the use "SIG" or "ENC", or slot 1-2-3 in the gpg_oid2curve and this function filters with this info, giving back None when the current OID is not matching the use.
Wrong, see below

About the very last point, after careful thinking, there is no issue. Because what the user inputs in the algorithm Cx slots is not the algorithm but the curve (for EC), and all the curves can be used for ECDSA, and also ECDH exchange. So no need to filter out, as RSA and ECDSA can work whatever the key slot and its use.
Except for the "25519" familly, where the "twisted" curve used for signing (SIGN/AUT), and the other "original" used for key exchange (ENC) are slightly different. Yes, in a way there are the same with a bijection, but their parameters are different, and they have different OID.

Related to that, there are lot of discrepancies between the docs and the code

In the doc :
The application supports:

RSA with key up to 4096 bits
ECDSA with secp256k1, secp256r1, brainpool 256r1 and brainpool 256t1 curves
EDDSA with Ed25519 curve
ECDH with secp256k1, secp256r1, brainpool 256r1, brainpool 256t1 and curve25519 curves

In the repository Readme (front page) :
The application supports:

RSA with key up to 4096 bits
ECDSA with secp256k1
EDDSA with Ed25519 curve
ECDH with secp256k1 and curve25519 curves

In the code :

CX_CURVE_SECP256R1
CX_CURVE_Ed25519
CX_CURVE_Curve25519

That means for EC :

ECDSA with secp256r1
EDDSA with Ed25519
ECDH with secp256r1 and curve25519

Any feedback on this ?

Hi,
Will check all that soon...

Hi,
Most of the points are now fixed in v2.1 (still in develop branch).
There is still a limitation: Decrypt with cv25519 dosen't work. This issue will be tracked separately.


Jira Gerrit plugin error on Jira server after Jira upgrade to 9.2.0

Hi,
We are using the Jira Gerrit plugin on our Jira server environment for a while now.
Recently we have upgraded our Jira to version 9.2.0 and since then the information on the Gerrit Reviews tab on Jira shows the following error:
"Error rendering 'com.meetme.plugins.jira.gerrit-plugin:gerrit-reviews-tabpanel'. Please contact your Jira administrators"
Our plugin version is 3.4
Please advise how to resolve asap
Thanks, Efrat.

Any update on this request?
We can't see the Gerrit Reviews in our Jira. this is critical to our work.

Hi,
We’ve used the following workaround –
The Gerrit tab was broken but there are other modules that enable showing the Gerrit info on other ticket fields.
So we’ve changed where we can view the info as a workaround.
Go to the JIRA Gerrit Plugin app listing under manage apps.
When you open the plugin details you can edit the app modules from the right menu (see “X of 29 modules enabled”)
The following can be switched off - Gerrit Reviews Tab Panel (gerrit-reviews-tabpanel) Show Gerrit reviews related to an issue in an issue tab panel.
The following can be switched on - Gerrit Reviews Web Panel (gerritreviewsmodule) Show Gerrit reviews in a View Issue panel.
There was also an option to show the info in the side panel
Hope this helps,
Efrat
From: Lawrence Dubé @.>
Sent: Monday, 30 January 2023 18:20
To: MeetMe/jira-gerrit-plugin @.>
Cc: Efrat Bar-Erez @.>; Mention @.>
Subject: [EXTERNAL] Re: [MeetMe/jira-gerrit-plugin] Jira Gerrit plugin error on Jira server after Jira upgrade to 9.2.0 (Issue #93)
@Efratbar did you find a workaround? or a fix — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned. Message ID: <MeetMe/jira-gerrit-plugin/issues/93/1408927606@ github. com>
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
@Efratbarhttps://github.com/Efratbar did you find a workaround? or a fix
—
Reply to this email directly, view it on GitHubhttps://github.com/MeetMe/jira-gerrit-plugin/issues/93#issuecomment-1408927606, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A3WLZ2QBMXIAQGCXG4BITM3WU7S35ANCNFSM6AAAAAARJEIYBQ.
You are receiving this because you were mentioned.Message ID: @.***>


minio charts uses image tag latest.

I thought the best practice was to put a real semver number for the image tag.
The minio chart uses :latest as a tag.
I think we should point to a specific tag.

I agree. @NitishT can you make that happen?

Thanks @viglesiasce @sebgoa I will change the default.

Update https://github.com/kubernetes/charts/pull/534 with fix for this.


add code 200 of network rm in api docs

related to PR https://github.com/docker/docker/pull/26960
This PR fixes existing mistake in DELETE /networks/(id) api in doc
Signed-off-by: allencloud<EMAIL_ADDRESS>

(For the PTAL request via https://github.com/docker/docker/pull/26960#issuecomment-250551467)
LGTM(non-binding)

Can you also update the older versions of the API if needed?

@thaJeztah @bfirsh
I do not think that we should update older versions than 1.24(same as engine version <= 1.11.x). Here is my reason:
In version <= 1.11.x, there is no Swarm Mode, so the code is like this:
func (n *networkRouter) deleteNetwork(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
	if err := httputils.ParseForm(r); err != nil {
		return err
	}
	if err := n.backend.DeleteNetwork(vars["id"]); err != nil {
		return err
	}
	w.WriteHeader(http.StatusNoContent)
	return nil
}

No need to remove cloudprovider networks.
While  when version >= 1.12.x, code is like this and there are two ways to remove:
func (n *networkRouter) deleteNetwork(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
	if err := httputils.ParseForm(r); err != nil {
		return err
	}
	if _, err := n.clusterProvider.GetNetwork(vars["id"]); err == nil {
		return n.clusterProvider.RemoveNetwork(vars["id"])
	}
	if err := n.backend.DeleteNetwork(vars["id"]); err != nil {
		return err
	}
	w.WriteHeader(http.StatusNoContent)
	return nil
}

I think when in docker 1.12.0 above, return n.clusterProvider.RemoveNetwork(vars["id"]) is not so perfect. It should still use format like
if err := n.backend.DeleteNetwork(vars["id"]); err != nil {
		return err
	}
	w.WriteHeader(http.StatusNoContent)
	return nil

PTAL

Thanks @allencloud, I was assuming the network-remove endpoint was already present in < 1.12, so older versions had the same issue

@thaJeztah
Thanks for your feedback.
Actually not. Since docker 1.12 introduces  return n.clusterProvider.RemoveNetwork(vars["id"]), and it introduced code 200.
in < 1.12, there is no  return n.clusterProvider.RemoveNetwork(vars["id"]), but
w.WriteHeader(http.StatusNoContent)
return nil

So older version only has code 204.
🐼

In that case; If this is introduced in 1.12, and a regression, I suggest to fix it after all @allencloud; I think they are planning to do 1.12.2-rc2 on Monday, so if we can fix before that, we should be able to get it in.
ping @bfirsh @vieux ^^

Thanks @thaJeztah
I hope to get this in rc2 as well. ping @bfirsh @vieux again.
Actually, now I fixed it in pr #26960 which fixed the issue introduced in 1.12. While this pr changes the docs  if we think it is improper to change the regression.
Open for any input. Plz let me know what I should do.

I think we should then try to get https://github.com/docker/docker/pull/26960 into 1.12.2

I think this PR isn't needed anymore since https://github.com/docker/docker/pull/26960 got merged

Correct, we can close this now. Thanks @allencloud !


Add icons to portfolios by making Icon a polymorphic class

https://projects.engineering.redhat.com/browse/SSP-607
Add Icon support for portfolios. Had to make Icon a polymorphic class, so updating a bunch of service class' logic to handle both portfolios and portfolio_items.
// TODO:

[x] fix IconsController#override_icon to work with both Ended up removing the specific override endpoint, instead we will just use Icons#create again and discard the old icon if present.

@miq-bot remove_label unmergeable

@miq-bot remove_label unmergeable


Table BulkAction: action callback is being called twice

Package
filament/tables
Package Version
v2.12.22
Laravel Version
v9.14
Livewire Version
v2.10.5
PHP Version
PHP 8.1
Bug description
The BulkAction action callback is called twice.
Steps to reproduce
    protected function getTableBulkActions(): array
    {
        return [
            BulkAction::make('foo')
                ->label('Hello world')
                ->color('success')
                ->deselectRecordsAfterCompletion()
                ->action(function (Collection $records) {
                    info('Triggered');
                }),
        ];
    }

Relevant log output
[2022-06-16 13:42:50] local.INFO: Triggered
[2022-06-16 13:42:50] local.INFO: Triggered

Resolved by upgrading to v2.13.4 .


[common] Container fails to deploy when service.enabled: false

Common library has a service.enabled flag, but the container that is being generated doesn't check for that flag when setting the ports causing it to fail when applying.
Originally posted by @bjw-s in https://github.com/k8s-at-home/charts/issues/167#issuecomment-727781761

Also noticed we don't add the ports from the additionalServices to the container.


Add "Success" notification after successful update of passcode/biometrics

Task description
This task is just to add a simple alert to the UI after a successful update of passcode / biometrics in the app.
The alert can be seen in Figma on the page called "Second batch of CRs from the UATs".

Investigated in Jira CBW-242.
There is already a Toast message displaying: “Passcode was successfully changed“.
This toast message is enough.


Sample/tutorial on "Category"

Hi,
Great work on TextRazor!
Is it possible to give an example on the "Category" (textrazor.ScoredCategory Object)?
I read through the documentation on https://www.textrazor.com/docs/python#Topic and had several attemps, but still don't get it right.
This is what I tried:
import textrazor
textrazor.api_key = "API_KEY_HERE"
manager = textrazor.ClassifierManager()
test_classifier_id = "my_test_classifier"
client = textrazor.TextRazor(extractors=["topics"])
response = client.analyze('Although it is very early in the process, higher-level parallelism is slated to be a key theme of the next version of C++, says Bjarne Stroustrup')
for entity in response.categories():
print (entity.label)
Thank you.

Hi! To retrieve "Category" objects in the response you need to add them to the request before calling analyze, for example:
client.set_classifiers("textrazor_iab")
"Categories" are different to "Topics" and serve a slightly different purpose. "Topics" are an ever expanding unstructured set of high level themes that TextRazor can detect in your content. Categories are similar, but can only belong to a fixed Taxonomy from a classifier, which is useful if you need to classify to a known set of categories.
If you need any help please drop us an email at<EMAIL_ADDRESS>


Provide options config

The user can config something below:

interval time
host port of dashboard page
and so on...

[] 会


Add Web Streams API support

Support Node.js Web Streams API supporting the WHATWG Streams Standard by introducing WebStreamReader.
Implements #353

Part of v5.1.0


The francinette does not do a free in the test of lst_map in libft.

The tester does not free up the 30 bytes of memory allocated in the function map_list in the fsoares test, i think that is causing a leak while in strict mode.
void *map_length(void *s)
{
char *str = malloc(30);
if (str != NULL)
sprintf(str, "__%lX", strlen((char *)s));
return str;
}
this function allocates 30 bytes but does not free it i think.

The problem is not with that function. Yes, it allocates memory, but the del function deletes that memory.
The problem is that in the function lstmap what happens when the allocation for lstnew fails?
If by this point you already called the f function, then you need to call del on that allocation.
That is what I think it is missing.

I hope its that. :D


Reloading the SFZ file stops all audio

Should be so much better if we could reload the SFZ file without stopping a playing sample... Changes done would of course have no effect on the sample that is played, just on those which are triggered after the reload.

It would. It's a bit more complicated to achieve than what it looks, but we're having more and more requests about it.


"flutter screenshot" requires a project and gets really confused without one

flutter screenshot --type=skia --observatory-uri=http://<IP_ADDRESS>:45117/sFw78QMClFY=/ run in some random directory (not one with a Flutter project) crashes with confusing output:
ianh@burmese:~$ flutter screenshot --type=skia --observatory-uri=http://<IP_ADDRESS>:45117/sFw78QMClFY=/
No supported devices connected.
The following devices were found, but are not supported by this project:
Lenovo TB 8504F (mobile) • HGAFGRP2 • android-arm64  • Android 7.1.1 (API 25)
Linux (desktop)          • linux    • linux-x64      • Linux
Chrome (web)             • chrome   • web-javascript • Google Chrome 89.0.4389.90
If you would like your app to run on android or linux or web, consider running `flutter create .` to generate projects for these platforms.

Oops; flutter has exited unexpectedly: "_flutter.screenshotSkp: (-32000) Could not capture SKP screenshot.".
Unable to generate crash report due to secondary error: Null check operator used on a null value
Please report a bug at https://github.com/flutter/flutter/issues.

Oops; flutter has exited unexpectedly: "_flutter.screenshotSkp: (-32000) Could not capture SKP screenshot.".
Unable to generate crash report due to secondary error: Null check operator used on a null value
Please report a bug at https://github.com/flutter/flutter/issues.

We're probably checking for devices because the "Regular" screenshots need device specific commands. We'd need to special case the type=skia to only connect

flutter screenshot alone just grabs the actual screen of the nearest device (and ignores --observatory-uri entirely), but when run outside of a directory with a Flutter project refuses to actually do it even though it works fine if there is a Flutter project.
flutter screenshot --type=rasterizer does the same as skia and crashes in the same way in this situation.

fix was easy enough, confirmed that I'm able to take a skp from a random directory with a running flutter apps URL


annonars call wrong for grch38 and chromosomes prefixed with chr

Describe the bug
When using grch38 and the chromosomes in the database are prefixed with chr, a chr is still added to the chromosome name:
proxy/varfish/annonars/annos/variant?genome_release=grch38&chromosome=chrchr1&pos=1234&reference=G&alternative=A

reev-frontend-lib is affected, not reev. closing


Under MySQL emptying the trash does not purge folders, only items

This seems specific to the MySQL storage implementation as I was not able to replicate the bug on the live InWorldz grid.
Here's how to test:

Create a new folder in your inventory. It will be named "New Folder".
Delete the new folder.
Observe that the "delete" has moved the folder to the Trash, and the "New Folder" is sitting right at the top. This is correct and expected.
Right-click on the Trash and select "Empty Trash".
Observe that the everything in the Trash disappears from your inventory. This is correct and expected: the client removes the items and folders from its own view of inventory.
Relog.
Open Inventory and expand your Trash folder.
Observe to see if the "New Folder" is in the Trash.

If step 8 shows the "New Folder", then the bug is still in effect.
Replicated with the following setup:
Firestorm 4.7.3 (47323) Aug 17 2015 18:14:04 (Firestorm-Releasex64) with OpenSimulator support

On current Halcyon compilation under Mono on Linux, as well as the 0.9.11 R5513 binary release of InWorldz.
(Side note: this is a fork of issue #23, as that issue was found to be covering at least 3 different problems at the same time.)

After reviewing the code process, many thanks to the writers of doxygen, and comparing the logic on the MySQL side with the logic on the Cassandra side, I find the following:

The event handler is HandlePurgeInventoryDescendents() which calls
CachedUserInfo::PurgeFolder() which selects the active inventory provider and calls
<instance of IInventoryProviderSelector>::PurgeFolderContents() which calls
under MySQL:
** LegacyMysqlStorageImpl::deleteItemsInFolder() which executes
** An SQL statement: DELETE FROM inventoryitems WHERE parentFolderID=?uuid
under Cassandra:
** InventoryStorage::PurgeFolderContentsInternal() which executes
** a redundant check that the folder ID is not UUID.Zero,
** removes all the sub-sub folders recursively, then all the subitems and lastly the subfolders,
** increments the folder version.

You can see that there's a logic failure here.  I'm reviewing the existing commands to see if there's a better match.


How to add run mechvibes on startup on Linux without gui?

I just make it to open with crontabs but I don't want to always close this window of mechvibes

OK I got it just press enable on startup on system bar (probably right top corner)

Looks like this (GNOME gui)

Does it work for you?
Because for me, after reboot the checkbox is unchecked everytime and mechvibes won't autostart


[macOS] Using Japanese IME suggestion panel produces incorrect results

Steps to reproduce

Run the sample app on macOS
Set the keyboard to Japanese - Kana
Type "krwkwr"
Press down arrow a three times to navigate between the suggestions (the suggestions panel will appear at the bottom of the screen)

Expected results
The message "old text from delta doesn't match resulting text from previous delta" shouldn't be printed.
Actual results
The message "old text from delta doesn't match resulting text from previous delta" is printed, because a delta is reported with an oldText that's different from the resulting text of the previously applied delta.
Code sample
Code sample
// ignore_for_file: avoid_print

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(
    const MaterialApp(
      home: Scaffold(
        body: TextInputExample(),
      ),
    ),
  );
}

class TextInputExample extends StatefulWidget {
  const TextInputExample({super.key});

  @override
  State<TextInputExample> createState() => _TextInputExampleState();
}

class _TextInputExampleState extends State<TextInputExample> implements DeltaTextInputClient {
  final FocusNode _focusNode = FocusNode();
  final GlobalKey _textKey = GlobalKey();

  TextInputConnection? _inputConnection;
  TextEditingValue _currentEditingValue = const TextEditingValue(
    text: '',
    selection: TextSelection.collapsed(offset: 0),
  );

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      _attach();
    });
  }

  @override
  void dispose() {
    _focusNode.dispose();
    super.dispose();
  }

  @override
  void updateEditingValueWithDeltas(List<TextEditingDelta> textEditingDeltas) {
    TextEditingValue newEditingValue = _currentEditingValue;

    print('received ${textEditingDeltas.length} delta(s)');
    for (final delta in textEditingDeltas) {
      print('apply delta: $delta');
      if (delta.oldText != newEditingValue.text) {
        print('old text from delta doesn\'t match resulting text from previous delta');
        print('old text from current delta: ${delta.oldText}');
        print('the previous text was: ${newEditingValue.text}');
      }
      newEditingValue = delta.apply(newEditingValue);

      print('new editing value: $newEditingValue');
    }

    setState(() {
      _currentEditingValue = newEditingValue;
    });
  }

  void _attach() {
    if (_inputConnection != null) {
      return;
    }
    _inputConnection = TextInput.attach(
      this,
      const TextInputConfiguration(
        enableDeltaModel: true,
        inputType: TextInputType.multiline,
        textCapitalization: TextCapitalization.sentences,
        inputAction: TextInputAction.newline,
        keyboardAppearance: Brightness.light,
      ),
    );
    _inputConnection!.show();
    _inputConnection!.setEditingState(_currentEditingValue);
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Focus(
        focusNode: _focusNode,
        autofocus: true,
        onKeyEvent: _onKeyEvent,
        child: DecoratedBox(
          decoration: BoxDecoration(border: Border.all()),
          child: Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text(
              key: _textKey,
              _currentEditingValue.text,
              textAlign: TextAlign.center,
            ),
          ),
        ),
      ),
    );
  }

  @override
  void connectionClosed() {}

  @override
  AutofillScope? get currentAutofillScope => null;

  @override
  TextEditingValue? get currentTextEditingValue => _currentEditingValue;

  @override
  void insertTextPlaceholder(Size size) {}

  @override
  void performPrivateCommand(String action, Map<String, dynamic> data) {}

  @override
  void removeTextPlaceholder() {}

  @override
  void showAutocorrectionPromptRect(int start, int end) {}

  @override
  void showToolbar() {}

  @override
  void updateEditingValue(TextEditingValue value) {}

  @override
  void updateFloatingCursor(RawFloatingCursorPoint point) {}

  @override
  void didChangeInputControl(TextInputControl? oldControl, TextInputControl? newControl) {}

  @override
  void insertContent(KeyboardInsertedContent content) {}

  @override
  void performSelector(String selectorName) {}

  @override
  void performAction(TextInputAction action) {}

  KeyEventResult _onKeyEvent(FocusNode node, KeyEvent event) {
    return KeyEventResult.skipRemainingHandlers;
  }
}

Screenshots or Video
No response
Logs
Logs
Launching lib/main.dart on macOS in debug mode...
--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:arm64, id:00006020-001161A802C3C01E, name:My Mac }
{ platform:macOS, arch:x86_64, id:00006020-001161A802C3C01E, name:My Mac }
✓ Built build/macos/Build/Products/Debug/text_input_demo.app
Connecting to VM Service at ws://<IP_ADDRESS>:65413/SX6QDGFc-DE=/ws
Connected to the VM Service.
flutter: received 1 delta(s)
flutter: apply delta: TextEditingDeltaInsertion#7b906(oldText, textInserted: の, insertionOffset: 0, selection: TextSelection.collapsed(offset: 1, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 1))
flutter: new editing value: TextEditingValue(text: ┤の├, selection: TextSelection.collapsed(offset: 1, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 1))
flutter: received 1 delta(s)
flutter: apply delta: TextEditingDeltaInsertion#5d95c(oldText: の, textInserted: す, insertionOffset: 1, selection: TextSelection.collapsed(offset: 2, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 2))
flutter: new editing value: TextEditingValue(text: ┤のす├, selection: TextSelection.collapsed(offset: 2, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 2))
flutter: received 1 delta(s)
flutter: apply delta: TextEditingDeltaReplacement#40c0c(oldText: のす, textReplaced: のす, replacementText: のステ, replacedRange: TextRange(start: 0, end: 2), selection: TextSelection.collapsed(offset: 3, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 3))
flutter: new editing value: TextEditingValue(text: ┤のステ├, selection: TextSelection.collapsed(offset: 3, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 3))
flutter: received 1 delta(s)
flutter: apply delta: TextEditingDeltaInsertion#76689(oldText: のステ, textInserted: の, insertionOffset: 3, selection: TextSelection.collapsed(offset: 4, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 4))
flutter: new editing value: TextEditingValue(text: ┤のステの├, selection: TextSelection.collapsed(offset: 4, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 4))
flutter: received 1 delta(s)
flutter: apply delta: TextEditingDeltaInsertion#f548c(oldText: のステの, textInserted: て, insertionOffset: 4, selection: TextSelection.collapsed(offset: 5, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 5))
flutter: new editing value: TextEditingValue(text: ┤のステのて├, selection: TextSelection.collapsed(offset: 5, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 5))
flutter: received 1 delta(s)
flutter: apply delta: TextEditingDeltaReplacement#f4ab0(oldText: のステのて, textReplaced: のステのて, replacementText: のステのテス, replacedRange: TextRange(start: 0, end: 5), selection: TextSelection.collapsed(offset: 6, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 6))
flutter: new editing value: TextEditingValue(text: ┤のステのテス├, selection: TextSelection.collapsed(offset: 6, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: 0, end: 6))
flutter: received 1 delta(s)
flutter: apply delta: TextEditingDeltaReplacement#8ae6c(oldText: のステのテス, textReplaced: のステのテス, replacementText: の棄てのテス, replacedRange: TextRange(start: 0, end: 6), selection: TextSelection(baseOffset: 1, extentOffset: 6, isDirectional: false), composing: TextRange(start: 0, end: 6))
flutter: new editing value: TextEditingValue(text: ┤の棄てのテス├, selection: TextSelection(baseOffset: 1, extentOffset: 6, isDirectional: false), composing: TextRange(start: 0, end: 6))
flutter: received 1 delta(s)
flutter: apply delta: TextEditingDeltaReplacement#3748a(oldText: の棄てのテス, textReplaced: 棄てのテス, replacementText: のすてのテス, replacedRange: TextRange(start: 1, end: 6), selection: TextSelection(baseOffset: 1, extentOffset: 6, isDirectional: false), composing: TextRange(start: 0, end: 6))
flutter: new editing value: TextEditingValue(text: ┤ののすてのテス├, selection: TextSelection(baseOffset: 1, extentOffset: 6, isDirectional: false), composing: TextRange(start: 0, end: 6))
flutter: received 1 delta(s)
flutter: apply delta: TextEditingDeltaReplacement#d1388(oldText: のすてのテス, textReplaced: すてのテス, replacementText: の須てのテス, replacedRange: TextRange(start: 1, end: 6), selection: TextSelection(baseOffset: 1, extentOffset: 6, isDirectional: false), composing: TextRange(start: 0, end: 6))
flutter: old text from delta doesn't match resulting text from previous delta
flutter: old text from current delta: のすてのテス
flutter: the previous text was: ののすてのテス
flutter: new editing value: TextEditingValue(text: ┤のの須てのテス├, selection: TextSelection(baseOffset: 1, extentOffset: 6, isDirectional: false), composing: TextRange(start: 0, end: 6))

Flutter Doctor output
Doctor output
[✓] Flutter (Channel master, 3.24.0-1.0.pre.193, on macOS 14.5 23F79 darwin-arm64, locale en-BR)
    • Flutter version 3.24.0-1.0.pre.193 on channel master at /Users/angelosilvestre/dev/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 665d9e6e86 (3 weeks ago), 2024-07-19 08:23:05 +0900
    • Engine revision 766f7bed71
    • Dart version 3.6.0 (build 3.6.0-55.0.dev)
    • DevTools version 2.37.1

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/angelosilvestre/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS (Xcode 15.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15F31d
    ! CocoaPods 1.12.1 out of date (1.13.0 is recommended).
        CocoaPods is a package manager for iOS or macOS platform code.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/to/platform-plugins
      To update CocoaPods, see https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] VS Code (version 1.92.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.94.0

[✓] Connected device (3 available)
    • macOS (desktop)                 • macos                 • darwin-arm64   • macOS 14.5 23F79 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad • darwin         • macOS 14.5 23F79 darwin-arm64
    • Chrome (web)                    • chrome                • web-javascript • Google Chrome 127.0.6533.90

[✓] Network resources
    • All expected network resources are available.

Thanks for the report. I was able to replicate this on latest versions.
Stable: 3.24.0
Master: 3.24.0-1.0.pre.509

CC @Renzo-Olivares from triage.

This is a report following the this issue.
https://github.com/singerdmx/flutter-quill/issues/2178
I have built the Flutter engine and considered fixing it.
Expected results

今日は家に帰ります

Actual results

今日は家に帰ります家に帰ります

Code sample
Type a sentence and then press enter.
After insertText  is called from macOS NSTextInputClient
flutter/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm
- (void)insertText:(id)string replacementRange:(NSRange)range {
  if (_activeModel == nullptr) {
    return;
  }
  _eventProducedOutput |= true;

  FML_LOG(INFO) << "insertText"
   << " string=" << string;
   << " range=" << range.location << " " << range.length;

  if (range.location != NSNotFound) {
    // The selected range can actually have negative numbers, since it can start
    // at the end of the range if the user selected the text going backwards.
    // Cast to a signed type to determine whether or not the selection is reversed.
    long signedLength = static_cast<long>(range.length);
    long location = range.location;
    long textLength = _activeModel->text_range().end();

    size_t base = std::clamp(location, 0L, textLength);
    size_t extent = std::clamp(location + signedLength, 0L, textLength);

    _activeModel->SetSelection(flutter::TextRange(base, extent));
  }

  flutter::TextRange oldSelection = _activeModel->selection();
  flutter::TextRange composingBeforeChange = _activeModel->composing_range();
  flutter::TextRange replacedRange(-1, -1);

  std::string textBeforeChange = _activeModel->GetText().c_str();
  std::string utf8String = [string UTF8String];

  FML_LOG(INFO) << "textBeforeChange=" << textBeforeChange;
  FML_LOG(INFO) << "utf8String=" << utf8String;

  _activeModel->AddText(utf8String);

  FML_LOG(INFO) << "textAfterChange=" << _activeModel->GetText().c_str();

  if (_activeModel->composing()) {
    replacedRange = composingBeforeChange;
    _activeModel->CommitComposing();
    _activeModel->EndComposing();
  } else {
    replacedRange = range.location == NSNotFound
                        ? flutter::TextRange(oldSelection.base(), oldSelection.extent())
                        : flutter::TextRange(range.location, range.location + range.length);
  }

  if (_enableDeltaModel) {
    [self updateEditStateWithDelta:flutter::TextEditingDelta(textBeforeChange, replacedRange, utf8String)];
  } else {
    [self updateEditState];
  }
}

[INFO:flutter/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm(745)] insertText string=1 range=9223372036854775807 0
[INFO:flutter/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm(770)] textBeforeChange=今日は家に帰ります
[INFO:flutter/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm(771)] utf8String=今日は家に帰ります
[INFO:flutter/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm(775)] textAfterChange=今日は家に帰ります家に帰ります

Problem occurred after _activeModel->AddText.
Next, check AddText.
flutter/shell/platform/common/text_input_model.cc
void TextInputModel::AddText(const std::u16string& text) {
  FML_LOG(INFO) << "AddText:"
    << " text=" << fml::Utf16ToUtf8(text)
    << " text_=" << fml::Utf16ToUtf8(text_)
    << " selection_=" << selection_.start() << " " << selection_.length()
    << " composing_range_=" << composing_range_.start() << " " << composing_range_.length();

  DeleteSelected();

  FML_LOG(INFO) << "after DeleteSelected: "
    << " text_=" << fml::Utf16ToUtf8(text_)
    << " selection_=" << selection_.start() << " " << selection_.length()
    << " composing_range_=" << composing_range_.start() << " " << composing_range_.length();

  if (composing_) {
    // Delete the current composing text, set the cursor to composing start.
    text_.erase(composing_range_.start(), composing_range_.length());
    selection_ = TextRange(composing_range_.start());
    composing_range_.set_end(composing_range_.start() + text.length());

    FML_LOG(INFO) << "after erace composing_range: "
      << " text_=" << fml::Utf16ToUtf8(text_)
      << " selection_=" << selection_.start() << " " << selection_.length()
      << " composing_range_=" << composing_range_.start() << " " << composing_range_.length();
  }
  size_t position = selection_.position();
  text_.insert(position, text);
  selection_ = TextRange(position + text.length());

  FML_LOG(INFO) << "after text_.insert: "
    << " position=" << position
    << " text_=" << fml::Utf16ToUtf8(text_)
    << " selection_=" << selection_.start() << " " << selection_.length()
    << " composing_range_=" << composing_range_.start() << " " << composing_range_.length();
}

[INFO:flutter/shell/platform/common/text_input_model.cc(151)] AddText: text=今日は家に帰ります text_=今日は家に帰ります selection_=0 3 composing_range_=0 9
[INFO:flutter/shell/platform/common/text_input_model.cc(159)] after DeleteSelected:  text_=家に帰ります selection_=0 0 composing_range_=0 0
[INFO:flutter/shell/platform/common/text_input_model.cc(170)] after erace composing_range:  text_=家に帰ります selection_=0 0 composing_range_=0 9
[INFO:flutter/shell/platform/common/text_input_model.cc(180)] after text_.insert:  position=0 text_=今日は家に帰ります家に帰ります selection_=9 0 composing_range_=0 9

It is expected that text_ in composing_range_ would be deleted before text_.insert, but this is not the case.
DeleteSelected deletes only selection_ range and clears composing_range_.
Next, check DeleteSelected.
flutter/shell/platform/common/text_input_model.cc
bool TextInputModel::DeleteSelected() {
  if (selection_.collapsed()) {
    return false;
  }

  FML_LOG(INFO) << "DeleteSelected: "
    << " text_=" << fml::Utf16ToUtf8(text_)
    << " selection_=" << selection_.start() << " " << selection_.length()
    << " composing_range_=" << composing_range_.start() << " " << composing_range_.length();

  size_t start = selection_.start();
  text_.erase(start, selection_.length());
  selection_ = TextRange(start);

  FML_LOG(INFO) << "after text_.erase: "
    << " text_=" << fml::Utf16ToUtf8(text_)
    << " selection_=" << selection_.start() << " " << selection_.length()
    << " composing_range_=" << composing_range_.start() << " " << composing_range_.length();

  if (composing_) {
    // This occurs only immediately after composing has begun with a selection.
    composing_range_ = selection_;
  }
  return true;
}

[INFO:flutter/shell/platform/common/text_input_model.cc(115)] DeleteSelected:  text_=今日は家に帰ります selection_=0 3 composing_range_=0 9
[INFO:flutter/shell/platform/common/text_input_model.cc(124)] after text_.erase:  text_=家に帰ります selection_=0 0 composing_range_=0 0

“This occurs only immediately after composing has begun with a selection. “
However, in macOS Japanese IME, selection_ indicates only a portion of the range of an unfinalized string that is being converted. The entire conversion range is composing_range_.
In this example, selection_ is the range from the beginning of composing_range_, and in Japanese conversion, selection_ can also be the middle part of composing_range_.
It would be quicker to fix this in text_input_model.cc, but this is a common code for each device, so it will affect other devices that do not have the problem.
So I fixed it with insertText in FlutterTextInputPlugin.mm mentioned at the beginning of this article.
flutter/shell/platform/darwin/macos/framework/Source/FlutterTextInputPlugin.mm
- (void)insertText:(id)string replacementRange:(NSRange)range {
  if (_activeModel == nullptr) {
    return;
  }
  _eventProducedOutput |= true;

  if (range.location != NSNotFound) {
    // The selected range can actually have negative numbers, since it can start
    // at the end of the range if the user selected the text going backwards.
    // Cast to a signed type to determine whether or not the selection is reversed.
    long signedLength = static_cast<long>(range.length);
    long location = range.location;
    long textLength = _activeModel->text_range().end();

    size_t base = std::clamp(location, 0L, textLength);
    size_t extent = std::clamp(location + signedLength, 0L, textLength);

    _activeModel->SetSelection(flutter::TextRange(base, extent));
  }
+ else if (_activeModel->composing() && !(_activeModel->composing_range() == _activeModel->selection())) {
+   // When confirmed by Japanese IME, string replaces range of composing_range.
+   // If selection == composing_range there is no problem.
+   // If selection ! = composing_range the range of selection is only a part of composing_range.
+   // Since _activeModel->AddText is processed first for selection, the finalization of the conversion
+   // cannot be processed correctly unless selection == composing_range or selection.collapsed().
+   // Since _activeModel->SetSelection fails if (composing_ && !range.collapsed()),
+   // selection == composing_range will failed.
+   // Therefore, the selection cursor should only be placed at the beginning of composing_range.
+   flutter::TextRange composing_range = _activeModel->composing_range();
+   _activeModel->SetSelection(flutter::TextRange(composing_range.start()));
+ }

  flutter::TextRange oldSelection = _activeModel->selection();
  flutter::TextRange composingBeforeChange = _activeModel->composing_range();
  flutter::TextRange replacedRange(-1, -1);

  std::string textBeforeChange = _activeModel->GetText().c_str();
  std::string utf8String = [string UTF8String];

  _activeModel->AddText(utf8String);

  if (_activeModel->composing()) {
    replacedRange = composingBeforeChange;
    _activeModel->CommitComposing();
    _activeModel->EndComposing();
  } else {
    replacedRange = range.location == NSNotFound
                        ? flutter::TextRange(oldSelection.base(), oldSelection.extent())
                        : flutter::TextRange(range.location, range.location + range.length);
  }

  if (_enableDeltaModel) {
    [self updateEditStateWithDelta:flutter::TextEditingDelta(textBeforeChange, replacedRange,
                                                             utf8String)];
  } else {
    [self updateEditState];
  }
}

This solved the problem.
What do you think?
Not only this example, but I have tried several Japanese input patterns and they work fine.
Not only the standard macOS Japanese IME, but also 3rd party ones worked fine.


Finishes remaining QA items for the Inquire via Phone modal

This addresses the following QA items in https://github.com/artsy/collector-experience/issues/229#issuecomment-298762022:

Follow artist of the artwork after signup
If user signed up, when they close out of the modal, refresh the page so that they can see that they’re logged in

LGTM! I rebuilt cause of a hopefully spurious integration spec, let's see how it goes...

The failure looks legit, although the helper does have an artistIds function. The login failure might be related to unnecessary hooks that didn't get detached from mediators. I'll look into them further more.

So the problem was that a stub was missing in desktop/apps/artwork/components/commercial/test/template.coffee. I also tried to run the whole build without cache in CircleCI and everything passed. this PR is good to merge now.


Change LOGIN_URL attribute name

Change in djnagosaml2 to take a different LOGIN_URL attribute defined in settings.py

Can you also bump the version and update the contexalyze PR with the similar changes?
Updated the version of djangosaml2 in this PR as well as in Contexalyze PR.

Updated the djangosaml2 version in this PR as well as the Contexalyze PR.


Git Push creates weird black bar with no feedback

So I used Git Push to push commits up to my repo. The command created a weird black bar at the bottom of the window and gave me no feedback that the push was successful:

Also, I found that the "Add All and Commit" overlay was dark and interfered with the status bar in my theme. Is there a way to perhaps use more native "styled" UI elements for this?

I've found that atom's behavior with my SSH keyring and public key authentication on Linux is wonky; sometimes when I start atom, I can't do any remote activity (such as pushing or pulling) without manually entering my password to unlock my private key. I have to do this each time. Other times this works fine (it seems to happen at random, but a reboot or log off is required to fix it).
It doesn't seem to be a system wide issue as whenever this happens, I can still open my terminal emulator outside of atom and push/pull just fine (and my SSH keyring is automatically unlocked as expected).
Other packages also seem to have trouble with this, as whenever this happens (the requesting of my passphrase) in git-plus, it also happens in other packages such as terminal emulator packages (inside atom, not outside as before). This is also the reason the black bar shows up for me; it means git's spawned SSH process is hanging on the background, waiting for a passphrase to be entered. Manually killing the SSH process effectively makes the black bar show git's output that pulling/pushing failed because authentication failed.


Chat not working - step 25

I'm doing the zombie github tutorial and I'm on step 25. https://github.com/awslabs/aws-lambda-zombie-workshop. When I login and write a message i click "Enter" my message remains there, and the text field gets disabled and it doesn't get posted into the main square. Then if I click stop chatting and press again start chatting the textfield is still disabled, even if I logged out and log back in. Same happens if a create more accounts Do you experience this too? if yes how did you solve it?

Adding more info, I get a 403 from the talkers and messages endpoints and these response headers:
content-type:application/json
date:Mon, 11 Sep 2017 18:46:25 GMT
status:403
via:1.1 ec7268fa1110683dbc457e57c2be1475.cloudfront.net (CloudFront)
x-amz-cf-id:FmsQPuN-QzwPQre9k413Bo03qP8nCR4dTPkD7n7Q7DikDsB1C-feWQ==
x-amzn-errortype:MissingAuthenticationTokenException
x-amzn-requestid:8375cdb3-9721-11e7-98e2-b3071386ceb6
x-cache:Error from cloudfront```

I am still receiving this message as well. I worked around this by setting the Authorization mechanism to "None" instead of "AWS_IAM" for all GETs and POSTs. I'm still digging around the code trying to figure out where this needs to be fixed.


Storybook problem class Icon

[x] Review the documentation: https://github.com/oblador/react-native-vector-icons
[x] Search for existing issues (including closed issues): https://github.com/oblador/react-native-vector-icons/issues

Environment
Mac os, web,  "react-native-vector-icons": "^7.1.0"

Description
Hi @oblador :
We are developing a component in react-native which uses react-native-paper, as it also works on the web, which in turn uses react-native-vector-icons, but on react-native-vector-icons we are having the following error.
As you can see below the errors, the component appears to be loaded with data.
Can anyone help us out?
ERROR in ./node_modules/react-native-vector-icons/lib/create-icon-set.js 43:9
Module parse failed: Unexpected token (43:9)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
|
|   class Icon extends PureComponent {
>     root = null;
|
|     static propTypes = {
 @ ./node_modules/react-native-vector-icons/MaterialCommunityIcons.js 6:0-50 9:16-29
 @ ./node_modules/react-native-paper/lib/module/components/MaterialCommunityIcon.js
 @ ./node_modules/react-native-paper/lib/module/components/Chip.js
 @ ./node_modules/react-native-paper/lib/module/index.js
 @ ./src/components/TestComponent10/TestComponent1.stories.js
 @ ./src/components sync ^\.\/(?:(?:|\/|(?:(?:(?!(?:|\/)\.).)*?)\/)(?!\.)(?=.)[^/]*?\.stories\.(?:\[tj\]|[tj])s)$
 @ ./.storybook/generated-entry.js
 @ multi<EMAIL_ADDRESS><EMAIL_ADDRESS>./.storybook/generated-entry.js (webpack)-hot-middleware/client.js?reload=true&quiet=true

I'm facing the same problem. Is there any workaround solution for this?

I'm facing the same problem. Is there any workaround solution for this?

@Angelk90 do you found the solution?

I managed to fix this with some changes in my .babelrc file and in my webpack file
.babelrc
{
  "presets": [
    ["@babel/preset-env", {
      "loose": true,
      "modules": false
    }],
	"@babel/preset-react"
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties"
  ]
}

Webpack
module.exports = {
  mode: 'development',
  entry: {
    app: [
      './src/app.jsx'
    ]
  },
  module: {
    rules: [
      {
        test: (m) => { return /\.(js|jsx)$/.test(m) },
        //exclude: (m) => { return /node_modules/.test(m) }, // commenting out this means the Babel is also applied to react-native-vector-icons
        use: {
          loader: 'babel-loader',
          options: {
            presets: [
              '@babel/preset-env',
              '@babel/preset-react'
            ],
            plugins: [
              '@babel/plugin-proposal-class-properties' // making sure class properties is understood by babel
            ]
          }
        }
      },
     ...

exclude: (m) => {
          return /node_modules/.test(m) && !/node_modules\/react-native-vector-icons/.test(m)
        },

is even cleaner.

@lil5 :
I can ask you to take a look at it, the project is this: Github
The result I get is this using: react-native-vector-icons

Experiencing the same thing in react-native-web

@oblador Please close this issue as it has nothing to do with react-native-vector-icons. Rather this is an issue of badly configured Webpack configurations.

@Angelk90 @hyochan
I have tried to explain how to fix it, if my explanations aren't well written, please I am open to constructive criticism. (but don't expect me to fix your code!)

Done!

@lil5 :
I can ask you to take a look at it, the project is this: Github
The result I get is this using: react-native-vector-icons

Experiencing the same thing in react-native-web

Did you resolve the issue?
Having the same issue.


RuntimeError: Cannot return the results in a contigious 2D array. Probably ef or M is too small

Getting this error with the following code:
vectordb = Chroma.from_documents(results, embeddings)
relevant_docs = vectordb.similarity_search(query=item.question, k=min(len(vectordb.get()["ids"]), num_search_results))

Any ideas how to fix?

Hi @AmanKishore,
Can you provide more details on the dataset? Are you using filtering?

I can reproduce this when filtering out enough items that k < filtered_element_count.
Say I have an index with 10 documents, but only 2 evaluate to true in _predicate(id):
# idx: ef_construction=200, M=64
docs, distance = idx.knn_query(vector, k=2, filter=_predicate, num_threads=1)
# works OK, returns 2 docs

# delete the first result
idx.mark_deleted(docs[0])

# do the same search (expect 1 results because of filtering)
docs, distance = idx.knn_query(vector, k=2, filter=_predicate, num_threads=1)
# RuntimeError: Cannot return the results in a contigious 2D array. Probably ef or M is too small

It would be nice for the knn_query() function contract to allow return less than k items if the list of valid elements is exhausted.

Hi @aramperes,
Thanks for the example. We will fix it soon for non-batched queries.
I wonder if it is a problem for batched queries? There there would be an issue with a the different number of returned nearest neighbors, which would require a flag that would do switching output to lists, padding, or returning the number of items. I am not sure which would work the best.

I tried multiple parameters for ef and M but problem persists. However, if I remove the where clause in query, it goes away. Perhaps the error message is misleading and it has nothing to do with the tuning but bug with memory issues?


[rtl/lc_ctrl] Fix jtag d_error

When I try to use DMI to access LC_CTRL CSR, I always get a d_error.
The error is coming from this check: https://github.com/lowRISC/opentitan/blob/master/hw/ip/tlul/rtl/tlul_pkg.sv#L142
I believe it is related to default value for tap's tl_i.a_user.
Signed-off-by: Cindy Chen<EMAIL_ADDRESS>

Thanks for fixing that!

yeah sorry i'm tweaking this stuff overall.
so this will change again soon.
On Tue, Mar 2, 2021 at 6:34 PM cindychip<EMAIL_ADDRESS>wrote:

Merged #5438 https://github.com/lowRISC/opentitan/pull/5438 into master.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
https://github.com/lowRISC/opentitan/pull/5438#event-4399131203, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAH2RSVQYTS4XZMJ5QFD2ATTBWN2FANCNFSM4YQCC2LQ
.


--squash is only supported on a Docker daemon with experimental

First of all, congratulations for your project =-).
I really appreciate the fact that you'r sharing with our sec community.
I'm doing just a report about the installation process that some users could be confused.
Maybe when users execute the setup.sh file, docker will be warning:
"--squash" is only supported on a Docker daemon with experimental features enabled
We can put docker in experimental configuration using this command bellow:
echo $'{\n    "experimental": true\n}' | sudo tee /etc/docker/daemon.json
Maybe would be nice certify that this mode is enabled during the installation =-)
Thanks

Hi @bminossi,
I'm sorry for the delay in replying, I ended up getting lost in the notifications...
I will update the repository with your suggestions, thank you very much!


Exclude 3.9 on M1 for pyedflib

Motivation
Use get_package exclusion rule for 3.9 (and assume  3.8) for M1 macs for the pyedflib.

Need to add a M1 vs. ARM architecture detection to the get_package logic. platform has ways of doing this

@bendichter Does this work for you? Until they hopefully eventually fix it (if they do, can try to keep an eye on it...)


feature request: several emoji related requests

twemoji picker in the post and comment boxes
:emoji: shortcodes that convert into the specified unicode emoji
:emoji: shortcodes that convert into a really small  that points to some cubeupload thingy or something

twemoji picker in the post and comment boxes

i have a branch adding a twemoji picker on my machine. i may invest time to work on this soon. (after working on a few addon loading improvements and firefox bugs)

:emoji: shortcodes that convert into the specified unicode emoji

jeffalo said we can't do this because it would incentivize people to post things only wasteofplus users can see

:emoji: shortcodes that convert into a really small  that points to some cubeupload thingy or something

a really small what?

it was supposed to be <img>

:emoji: shortcodes that convert into the specified unicode emoji

jeffalo said we can't do this because it would incentivize people to post things only wasteofplus users can see
i meant inside of the post composing box

@all-contributors please add @whenthesilly for ideas

@all-contributors please add @whenthesilly for ideas
unrelated to this issue, but i need somewhere to post this

@all-contributors please add @reidthepog for ideas

@all-contributors please add @reidthepog for ideas

unrelated to this issue but i needed somewhere to post this


[BUG]Method not found: 'Void Microsoft.Azure.KeyVault.KeyVaultClient..ctor(Microsoft.Rest.ServiceClientCredentials, System.Net.Http.DelegatingHandler[])'

Describe the bug
Method not found: 'Void Microsoft.Azure.KeyVault.KeyVaultClient..ctor(Microsoft.Rest.ServiceClientCredentials, System.Net.Http.DelegatingHandler[])'

This happens only when the following assembly is added to web.config and this is happening with the latest version  Microsoft.Azure.Keyvault
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="<IP_ADDRESS>-<IP_ADDRESS>" newVersion="<IP_ADDRESS>" />
      </dependentAssembly>

If this is removed from web.config, then constructor along with params is recognized and this is
Expected behavior
Regardless of the xml if added or not added, it needs to recognize the constructor
Actual behavior (include Exception or Stack Trace)
What is the actual behavior?
 Method not found: 'Void Microsoft.Azure.KeyVault.KeyVaultClient..ctor(Microsoft.Rest.ServiceClientCredentials, System.Net.Http.DelegatingHandler[])'
Environment:

Name and version of the Library package used:  Microsoft.Azure.Keyvault, version=3.0.5
Hosting platform or OS and .NET runtime version (dotnet --info output for .NET Core projects): Windows 10 .NET framework 4.6.2
IDE and version : Visual Studio 2019

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

//cc: @schaabs

Redirecting the binding of System.Net.Http would not remove a method from our assembly. More likely the type definition of DelegatingHandler doesn't match. Could you provide the full exception message including stack trace?


DNS servers

Hello, I like your app and I want to use it, but also it would be greate if you add feature to choose custom dns server, like in crisp repo. It is killing feature for me

I need to be able to use NextDNS. I have a Handshake subdomain pointing to my Yggdrasil site address:
http://y.styromaniac.creator/

I'm in a test mode with this feature already. I think tomorrow will file a PR for that :)


(wrong) dandiset id persists within URL while browsing "drafts"

it probably does not apply to new api based one yet, but can't be certain due to outstanding #554
Originally reported by @djarecka in https://github.com/dandi/dandi-cli/issues/349#issuecomment-772103306 .
If you go to "drafts" folder while browsing some dandiset, that dandiset ID persists in url and even when you then switch to another dandiset. Steps to follow to see are in https://github.com/dandi/dandi-cli/issues/349#issuecomment-772103306

I don't think this is relevant anymore: I cannot reproduce according to the linked instructions, since there is no way to carry out the last step.


Specify prefixes for @Builder setters

Hello. Sorry, maybe I missed something, but for me it seems that currently there is no possibility to customize 'set' methods in @Builder annotation. Here is an example of feature:
@Builder(builderClassName = "Builder", withPrefix="with")
public class SomeClass {
    private int intField;
    private String stringField;
}

After delombok it should look something like that:
public class SomeClass{
    private int intField;
    private int stringField;

    SomeClass(int intField, int stringField) {
        this.intField = intField;
        this.stringField = stringField;
    }

    public static Builder builder() {
        return new Builder();
    }

    public static class Builder {
        private int intField;
        private int stringField;

        Builder() {
        }

        public SomeClass.Builder withIntField(int intField) {
            this.intField = intField;
            return this;
        }

        public SomeClass.Builder withStringField(int stringField) {
            this.stringField = stringField;
            return this;
        }

        public SomeClass build() {
            return new CarBrand(intField, stringField);
        }
    }
}

Currently we have no such parameter in @Builder so after delombok we will have next code:
public class SomeClass {
    private int intField;
    private String stringField;

    SomeClass(int intField, int stringField) {
        this.intField = intField;
        this.stringField = stringField;
    }

    public static Builder builder() {
        return new Builder();
    }

    public static class Builder {
        private int intField;
        private int stringField;

        Builder() {
        }

        public SomeClass.Builder intField(int intField) {
            this.intField = intField;
            return this;
        }

        public SomeClass.Builder stringField(int stringField) {
            this.stringField = stringField;
            return this;
        }

        public SomeClass build() {
            return new CarBrand(intField, stringField);
        }
    }
}

P.S.: I understand that maybe it is not super feature, but It's just strange for me, why we can customize builder name, even builder 'create' function name, but can not add prefixes.
Thank you!

Has this been released yet?

As far as I know, no.

Does anybody know when this will be released?

See #1209: we prefer with to be the prefix reserved for @Wither.


Release notes table of contents is broken

Type: Bug

Open 1.93 release notes in product
Try toc link

Bug
Nothing happens
VS Code version: Code - Insiders 1.93.0-insider (Universal) (336db9ece67f682159078ea1b54212de7636d88a, 2024-08-30T18:47:32.318Z)
OS version: Darwin arm64 23.6.0
Modes:

System Info

Item
Value

CPUs
Apple M2 Max (12 x 2400)

GPU Status
2d_canvas: unavailable_softwarecanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: disabled_softwaremultiple_raster_threads: enabled_onopengl: disabled_offrasterization: disabled_softwareraw_draw: disabled_off_okskia_graphite: disabled_offvideo_decode: disabled_softwarevideo_encode: disabled_softwarewebgl: unavailable_softwarewebgl2: unavailable_softwarewebgpu: unavailable_softwarewebnn: disabled_off

Load (avg)
3, 4, 4

Memory (System)
64.00GB (2.27GB free)

Process Argv
--crash-reporter-id 0fffb5da-9cd7-46fd-9e7f-a1564e8c5fda

Screen Reader
no

VM
0%

Root cause is that we picked up a new version of marked which no longer automatically generates an id for # headers

Working around with https://github.com/microsoft/vscode-docs/commit/e2f3b84544b2b8a5a42651dcf2e1aacaaf0eafdc

Additional workaround for website "underscored" bookmarks https://github.com/microsoft/vscode-docs/commit/dc111a8130803e0e66c6585363dbbb318e0a03cd

For verification:

Open the release notes in editor

Click on table of contents links and verify they work

View release notes on web

Also verify links work there too


Feature request: Create multiple files at once

Hello, and thanks for the great editor. I just thought that it would be nice to allow user to create multiple files at once, like typing {one,two,three}.txt into create file "dialog" and it would create one.txt, two.txt and three.txt
Thanks,
Miika

@mkoske, I took an interest in this idea about a week ago and have just finished a new package called new-file-plus that supports exactly this. Check it out and let me know what you think!

Hello, and thanks! It seems to work. One suggestion though... attach it to context menu "New file" too. I mean, when you click "New file" on file browser panel, it is the default "New file", not the extension you wrote.
Thanks,
Miika

On my system (Ubuntu 14.04) navigating to File>New File opens new-file-plus. Could you try completely closing and reopening Atom to see if that fixes it? If it doesn't could you open an issue here with your OS, atom version, etc?

Hello, yes it works. But I meant that when you have file tree on the left side of Atom window, and when you right click there, in the file  tree, and get the context menu, choose "New file" from there, you get the normal new file, not new-file-plus.

Aww, i see. i will look into that later tonight
—
Sent from Mailbox
On Thu, May 14, 2015 at 2:48 PM, Miika Koskela<EMAIL_ADDRESS>wrote:

Hello, yes it works. But I meant that when you have file tree on the left side of Atom window, and when you right click there, in the file  tree, and get the context menu, choose "New file" from there, you get the normal new file, not new-file-plus.
Reply to this email directly or view it on GitHub:
https://github.com/atom/atom/issues/6537#issuecomment-102133198

@mkoske, I was unable to completely overwrite the New File and New Folder commands, however I have added my own New File(+) and New Folder(+) commands that should work as expected. Let me know if you have any problems.

Is it worth keeping the issue open as request for Atom core, or does @sedabull's package satisfy the request?
I think it would make sense as an enhancement to the default file and folder creation logic, but the core devs may see that differently.