Date "according to Exif data" is sometimes wrong

In https://commons.wikimedia.org/wiki/File:Taiwan_white_caterpillar2018.jpg
you will observe "Date	1 November 2018 (according to Exif data)".
But if you scroll down to Metadata, you will find that is not the case.
App version: noted already on the page.
Please use the actual exif data date, not the upload date.
Nowhere in the exif data does it contain the upload date.

Hi @jidanni , thanks for reporting this. This is a known issue (see #1854 ) and should be fixed in v2.9. :)

Hi @jidanni , we just released this bugfix with v2.9 in beta. Could you please let us know if the problem is solved for you?

This is a big problem and it still exists in <IP_ADDRESS>~52ab393:
https://commons.wikimedia.org/w/index.php?title=File:アルファ元麻布.jpg&oldid=337653865
I shot that image on December 4 (as can be seen in the EXIF section) but the metadata wikitext created by our app wrongfully contains date={{According to EXIF data|2019-02-04}} which is the date at which I uploaded the picture.
This could bring us bad publicity, I received this on my talk page:

Please upload D5300 images from a desktop computer, not from your mobile phone
Hello, you might have already noticed, but the files you had taken with a Nikon D5300 camera had incorrect date information in {{information}}. For examples, File:アルファ元麻布.jpg and File:菊池家住宅 entrance.jpg had been actually taken on 4 December 2018, but the files initially showed 4 February 2019 as the date taken. These are, I believe, fatal errors, and it requires a hefty workload to remedy them manually. The reason such errors occur is that the Commons Mobile Application you are using is not smart enough to determine the appropriate dates. By using a desktop computer and Upload Wizard on commons, failures as such can be easily avoided, as it automatically adds dates based on the Exif of the images. As a user who added Category:December 2018 in Tokyo to your files, I ask you to do so, or you have to correct the date information by yourself. Please be aware that when an image was taken is as important as what it depicts. Regards,

We are already taking information from EXIF, I believe it is rather easy to fix, so I add the beginner-friendly tag.

I would like to pick this up as I believe my recent changes might have broken it. We will include it in 2.10.0.

Luckily the recent changes should not be on any published version of the app, just the alphas. Will hold 2.10 for it.
(Glad to see the alpha version is proving very useful, too! :))

Note: I am having this issue but I never use Google Photos.

Sorry, I named the PR Incorrectly. It fixes the issue for all uploads. Will edit the title when I get to my laptop.

I just uploaded a picture taken on January 28, and it displays January 29:
https://commons.m.wikimedia.org/wiki/File:Otafukuzaka%2C_Roppongi_5_chome.jpg

The problem is that we do not extract the date/time from EXIF so the summary is misleading.

As Google Photos do not return EXIF information(i tried a few 3rd party EXIF viewer apps to cross-check this), we started using ContentResolver to extract date/time. Sadly, we started doing it for all images and not just Google Photo images. For the above image EXIF had the date/time but as mentioned, we use ContentResolver for all images.
Most of the time this date would match the actual EXIF date so no one would complain but differences can be noticed for different time zones. This is because EXIF doesn't specify the timezone. http://www.exiv2.org/tags.html
References to code to understand the flow:
Extracting date time:
https://github.com/commons-app/apps-android-commons/blob/master/app/src/main/java/fr/free/nrw/commons/filepicker/UploadableFile.java#L70
Setting page contents:
https://github.com/commons-app/apps-android-commons/blob/master/app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java#L156
Sending page contents while uploading:
https://github.com/commons-app/apps-android-commons/blob/52ab39381eccb1d55231338b8c8ce7d6e57c4d29/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java#L248
IMO, what we have been doing is incorrect and we should use the words "according to EXIF" in the summary.
Please suggest, how to go about it.

Do not show file creation date if EXIF doesn't contain it.
Try to extract EXIF date and fallback to ContentResolver if EXIF is not present
Change the wording from "according to EXIF" to something relevant.

cc @misaochan @ashishkumar468 Please correct me if my understanding of the flow is incorrect.

I am also aware of the issue of not getting upload dates from the EXIF when uploaded via google photos. IMO as @maskaravivek  suggested, we should try to extract EXIF date and fallback to ContentResolver if EXIF is not present and similarly update the the display text "according to EXIF", based on the source of extraction.

Agreed with @ashishkumar468

Okay, thanks for the feedback. Will make these changes. :)

we should try to extract EXIF date and fallback to ContentResolver if EXIF is not present and similarly update the the display text "according to EXIF", based on the source of extraction.

If we have a fallback based on which we modify the display text then we need to introduce a timestampSource parameter in Contribution. That would require a schema update.

Hmm, I just re-read the issue, and it seems we have 2 problems:

The Google Photos EXIF issue. IME, EXIF has always been a problem with Google Photos, i.e. this is not a bug that was introduced by our recent changes. In that case, it is not crucial to have the fix in 2.10.1 (good to have, but we shouldn't hold up the release)
@nicolas-raoul 's issue. He says he has never used Google Photos, yet the date/time issue for him is persisting. This means that #2438 did not cover his use case. Is this correct?

I think (1) can wait, but (2) needs to be looked into. @nicolas-raoul could you give us details on the steps you use to upload? Are you using Android stock gallery? Images stored on SD card or phone memory?

I am at work so I can not research in detail, but checking my last few uploads, it seems like the dates look OK? https://commons.wikimedia.org/w/index.php?title=Special:ListFiles/Syced&ilshowall=1 Maybe it depends on the time of day?
I am using a Nexus 5, which does not have an external SD card, and recently I am mostly uploading pictures from a directory called /storage/emulated/0/nico/from-pc, example: https://commons.wikimedia.org/wiki/File:Y.S.Park_building_in%E8%8A%8B%E6%B4%97%E5%9D%82.jpg
A picture uploaded from /storage/emulated/0/DCIM/OpenCamera: https://commons.wikimedia.org/wiki/File:Pink_lights_and_bubble_machine_in_Roppongi_Hills_Arena.jpg
I always either use the app's built-in folder selection, or share from Android's stock gallery application (LineageOS 7.1.2). I don't remember what picture I sent with each methods, but I can upload a picture with each method and link to them from here later this evening if you want.

If the date is extracted from a source other than EXIF I will use this template for displaying the date:
{{date|2009|1|9}} → 9 January 2009

This will appear as:

If it comes from EXIF I will use continue using the existing template.
{{According to EXIF data|2009-01-09}}

This will keep appearing in the same old way.

@maskaravivek Sounds good.

@nicolas-raoul It would be great if you can confirm if this is fixed for you. It should be available in the latest alpha. :)

I just uploaded one picture and it looks OK: https://commons.wikimedia.org/wiki/File:Artists_workshop_closed_down,in_Imoaraizaka%E8%8A%8B%E6%B4%97%E5%9D%82.jpg
Thanks! :-)

Are you sure it is fixed? The SandBot just came across fixing a date of a file that i uploaded not long ago with the latest beta version (2.10.2~66e1539a1) : https://commons.wikimedia.org/w/index.php?title=File:Raspberry_Pi_3_Wikidata.jpg&action=history. Maybe there is also a problem with the timezone?

@Aschroet Thanks for reporting!
The original issue of this report was for date that were wrong by several months, so I guess it might be different, but still a problem of course.

Is this still available? I'd like to work on it

@madisoncfallin Thanks! Please first try to reproduce the issue by uploading a picture and let us know (including at what exact time/timezone you took a picture, uploaded the picture, what its EXIF contained, and what metadata appears on the image's page at https://commons.wikimedia.org)

@nicolas-raoul That will be difficult, I don't actually have an Android device easily available....Is there a way I could fake it in Android Studio?

Yes, it is actually easier in Android Studio, all web requests show up in logcat :-)

In Android Studio, just download any picture from https://drive.google.com/drive/folders/1T5wfM16qb78XCvnf1Zunww4neg8BXJj6?usp=sharing and use for upload in the app. Thanks! :-)

I believe that I've repro'd the issue: https://commons.wikimedia.beta.wmflabs.org/wiki/File:MCF_Test_Photo.jpg
The "Date" shown in the "Summary" box isn't a date at all.

Ah, the beta server does not have this template.
Please compile the app again with the "prodDebug" flavor, thanks!

@nicolas-raoul I just uploaded a photo on the prodDebug flavor: https://commons.wikimedia.org/wiki/File:MCF_Test_Photo_1.jpg
Is this the intended behavior? I would assume that the date of the photo should be the date it was taken, not the date it was uploaded.

Thanks! All of the dates on that page actually seem correct to me. Upload dates are really the date the picture was uploaded, while shooting dates are really the date the picture was shot.
The problem is shown by this past upload (which has been corrected since):
https://commons.wikimedia.org/w/index.php?title=File:Raspberry_Pi_3_Wikidata.jpg&oldid=352178950
I highlighted the correct date in green and the erroneous dates in red:

I notice that the picture was taken shortly before midnight: Maybe the app is rounding to the next hour or something similar? Would you mind trying again with a picture taken shortly before midnight?

Just checking if anyone is still able to reproduce this issue?

@madisoncfallin Could you please try to reproduce using this file taken shortly before midnight? https://drive.google.com/file/d/1vfTRupGatxi0W3TlGl8mF4-5Hk5vt4Fb/view I don't think the EXIF embeds any timezone information.

Just to clarify (as the discussion has been long), it is the date in the template that needs to change to follow the EXIF data, right?

Using the latest commit of https://github.com/commons-app/apps-android-commons/tree/4.0-release branch, I just uploaded the files below, cropped or not, rotated or original. Some have a one day difference between EXIF and {{According to Exif data|, some not:
One day difference:

https://commons.wikimedia.org/wiki/File:横浜YMCA.jpg taken at 18:02, 12 July 2022, we generated {{According to Exif data|2022-07-13}}. Original (not edited).
https://commons.wikimedia.org/wiki/File:Shibuya_Bridge_on_weekend_5.jpg 15:05, 17 July 2022. Original.
https://commons.wikimedia.org/wiki/File:Shibuya_Bridge_on_weekend_4.jpg original
https://commons.wikimedia.org/wiki/File:Shibuya_Bridge_on_weekend_3.jpg original
https://commons.wikimedia.org/wiki/File:Shibuya_Bridge_on_weekend_2.jpg original
https://commons.wikimedia.org/wiki/File:Shibuya_Bridge_on_weekend.jpg original

Correct:

https://commons.wikimedia.org/wiki/File:Red_panda_at_Nogeyama_Zoo.jpg taken at 13:48, 12 July 2022, we generated {{According to Exif data|2022-07-12}}. Original.
https://commons.wikimedia.org/wiki/File:Construction_around_Shibuya_station_6.jpg rotated
https://commons.wikimedia.org/wiki/File:Red_panda_at_Nogeyama_Zoo_(lossless_crop_with_JPEG_Cropper).jpg cropped

Thanks @nicolas-raoul ! Hmm, in that case the hypothesis re: saving date must be wrong, then? I have no idea what else could be the issue, as I don't see any pattern. Did you upload all of them through the same method (Contributions > Gallery > Stock Android Gallery)?

As i am (heavily) affected: I choose multiple files with a file commander and hand over via "share". But I doubt this is relevant here.

@misaochan: why the hypoth. then must be wrong? On his files I see identical capture and saving dates in the EXIF. Besides that: only 1 day difference could be timezone related and then another thing.

Hi @subbass1 , great to see you here! If I understand correctly, @nicolas-raoul 's reports indicate that some of his pictures had the correct date even though he edited the pictures. And some of his pictures have the wrong date even though they are originals and he did not edit them. Nicolas can you confirm my interpretation of your post?
Also, @subbass1 are all of your wrong dates just 1 day late similar to Nicolas's, or does it vary (some 1 day late, some 3 days late, etc)? If it varies, are they all late, or are some early?

@misaochan: here it's conistently this way (no timezone prob!): in the EXIF we have 2 fields/dates: "Erfassungszeitpunkt" (capture date) and "Speicherzeitpunkt" (saving date).  if they are the same, no problem. if not (this happens when you edit days later) the app errorously uses the saving date. And afaics the files by nicolas do show identical dates, so there can't be a problem related to this matter. A local saving date has no meaning afaics, it depends on the last edits on the file.

What change exactly did you perform on 13 July? Could you describe the process of making that change? I understand from your post on the Village Pump that it involves Google Photos, but I need to know the process so I can test it.

Yes, I always edit online (cutting, center etc.), and then for convenience first save on the phone before uploading in mass mode from there (also could be days later, but that makes no harm). The edits are being saved correctly by google photos on the files. The app should just ignore these field and always use "Erfassungszeitpunkt" (capture date, you called it "date and time of data generation")

Sweet, I have successfully reproduced the issue! https://commons.wikimedia.org/wiki/File:Australian_possum.jpg Thanks so much @subbass1 , we hope to fix this soon.
Summary
There are 2 separate issues.
Issue 1 - Date of data generation vs file change date
This is the issue that @subbass1 is experiencing. To reproduce, edit a photo in Google Photos on your phone, then save the edit. Then "Share" and select the Commons app. I can confirm that this happens in 4.0-release as well.
Solution: always use date and time of data generation in EXIF, not file change date and time.
Issue 2 - 1 day late
This is the issue that @nicolas-raoul is experiencing. To be determined: Why does it happen sometimes and not at other times? My hypothesis is that it depends on the cutoff time of the "day".
TODO: @nicolas-raoul if it's not too much trouble can you test uploading at different times of the day and see if there is a pattern? You are from +9 UTC, right?

[nicolas]' reports indicate that some of his pictures had the correct date even though he edited the pictures. And some of his pictures have the wrong date even though they are originals and he did not edit them.

True

You are from +9 UTC, right?

Yes

If you upload before 3pm then no problems, if you upload after 3pm then it's 1 day late

Great finding, before/after 3pm seems to indeed be the key! I guess you meant: If the picture's EXIF date (not sure which one, since the EXIF dates found in EXIF seem to always be identical for me) is before 3pm then no problem. If the picture's EXIF date is after 3pm then According to Exif data is set to 1 day too late. I will keep uploading more pictures to validate this hypothesis.
Should I create a new issue about Issue 2?

I have created #5017. Is it the same thing as Issue 1 above? (Sorry, I didn't catch up with the recent comments here.) I used the beta cluster, which might complicated things needlessly.

Hi @whym ! Yes, #5017 looks like a duplicate of Issue 1. We can close it and I will link to it in my summary comment above.
@nicolas-raoul Thanks! I think for now I will just link to #3635 in my summary comment, and later on that can serve as detailed discussion for Issue 2 if needed. I prefer not to move things around too much before @neslihanturan has the chance to catch up on this, as the discussion flow will be broken and that may be confusing. Once she has read this, she can choose to move Issue 2 to #3635 if she wants.

Agreed with having the discussion in one place for now.
To support what @misaochan said above (hi, it's been a while!), among ExifInterface's four timestamp-related methods, getDateTimeOriginal() seems like the one we want, at least if the device behaves as expected.

getDateTime(): this is the one the app currently uses. It is confusingly the last modification timestamp and can be updated when the image is edited apparently. Exiftool's documentation seems to support this understanding. (Find the row for "ModifyDate".) https://github.com/commons-app/apps-android-commons/blob/f8a8f9207028a6fb5a35483c040821f22daf755e/app/src/main/java/fr/free/nrw/commons/filepicker/UploadableFile.java#L127
getDateTimeOriginal(): this is the one we would want to use.
getDateTimeDigitized(): this can perhaps be used instead when DateTimeOriginal is unavailable. (But probably in most cases, just using getDateTimeOriginal() is fine.)
getGpsDateTime(): same as above

Also, it seems like the timezone offsets embedded in EXIF can be obtained by getAttribute() of ExifInterface. This might help when working on the timezone issue discussed above.

(about issue 2)
I have tested with around 100 pictures, I can confirm that being at UTC+9, any picture taken after 3pm leads to a According to Exif data which is +1 day compared to the picture's taken date documented in EXIF.
Apparently EXIF timezones can't be trusted, and actually when it comes to the According to Exif data template the app must ignore timezones. If a picture was taken at 2022 July 20 hh:mm:ss timezone TZ, we should not even try to interpret hh:mm:ss nor TZ, instead we must just take the 2022 July 20 part and use it directly without performing any calculation.
getDateTimeOriginal() returns a long (Unix epoch time when the picture was taken, example:<PHONE_NUMBER>000) in the GMT timezone, so this method does not solve issue 2.
Instead, we must use exif.getAttribute(ExifInterface.TAG_DATETIME). It returns a String (same example: 2022:07:18 18:14:13), which we can substring to get the year, month, day parts to insert directly into the According to Exif data template.

If we are to start from the string representation of the DateTimeOriginal value, I would expect lots of irregularities from different devices that Android supports. (I do think it's a great idea, though.) It might worth checkiing out how MediaWiki parses that in PHP.

(about issue 2)

I would expect lots of irregularities from different devices that Android supports, custom camera apps, and pictures the user might import from elsewhere

People have been transferring their pictures from their Android/etc devices for 17 years to upload via the web Upload Wizard, so I believe it is robust enough for us :-)
Thanks a lot for the PHP link! Judging from it, Mediawiki can parse the following EXIF DateTimeOriginal/etc formats:
/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d):(?:\d\d)$/D
/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d)$/D
/^(?:\d{4}):(?:\d\d):(?:\d\d)$/D
0000:00:00 00:00:00
    :  :     :  :

In other words, we can implement this pseudo-code:

year = substring from 0 length 4, then parse integer.
month = substring from 5, length 2, then parse integer.
day = substring from 8 length 2, then parse integer.
If any of the above failed, skip and do not output the template (because it means that the EXIF does not contain a usable date).
Concatenate {{According to Exif data| + year + - + month + - + day + }} and output that.

I wrote a database query and found a few edge cases of DateTimeOriginal values.

"03/03/2019 1:57" Venice_8.jpg
"2018-07-23 18:40:47" Kirkevoll_skole_panorama.jpg
"2018-10-07 13:18:19" Berganvannet,_Re.jpg Berganvannet,_Re_2.jpg Berganvannet,_Re_3.jpg

These were uploaded with different versions of the app, and I don't fully understand what was going on precisely. (If I remember it correctly, in some cases, the app might have wrongly inserted the current date as EXIF dates.)
I think it wouldn't hurt to support the "2018-07-23" format. Exiftool's implementation seems to do that, with /^(\d+)[-:](\d+)[-:](\d+)\s+(\d+):(\d+):(\d+)(.*)/: https://github.com/exiftool/exiftool/blob/1e17485cbb372a502e5b9d052d01303db735e6fa/lib/Image/ExifTool.pm#L5881
Not sure about "03/03/2019".

Thanks a lot for the research! Is 03/03/2019 format a rare exception, or is it quite prevalent? It could be a bug in an app's EXIF generator, by the way Date and time of digitizing in the EXIF of the same panoramic picture uses a more standard year-first format.
How about we just not generate the According to Exif data template if we do not recognize the date?

How about we just not generate the According to Exif data template if we do not recognize the date?

Sounds like a good option to me, if it's considered acceptable by the Commons community.

Yes, I forgot mention but we can say from the same results that nicolas-raoul's simple method will work for 99+% of the cases (both of the ":" and "-" delimiters). It would be nice to handle the 1% or fewer irregular cases, but that can wait.

In general, I think it's safe to assume the community expectation is "as good as UploadWizard or better".

How about we just not generate the According to Exif data template if we do not recognize the date?
Sounds like a good option to me, if it's considered acceptable by the Commons community?

I assume "not generate" means inserting the current date, which is what the app does.
For comparizon, when EXIF doesn't provide the date, UploadWizard asks for it. If I try to leave it empty, I cannot proceed. (It says "This field is required.") In this way, UW tries to find the correct date, with additional user interaction.
I think here (when EXIF doesn't provide the date) we can either

add a similar step to ask the user to enter the date manually
or use {{Upload date}} to make it clearer it's the current date

To do the latter, we will probably need another category in addition to TEMPLATE_DATE_ACC_TO_EXIF and TEMPLATE_DATA_OTHER_SOURCE:
https://github.com/commons-app/apps-android-commons/blob/7476b0a24d1dd14683ee2d775ad7d5a2b8968683/app/src/main/java/fr/free/nrw/commons/upload/PageContentsCreator.java#L20-L24
This could be done independently from fixing DateTime/DateTimeOriginal confusion. (It also could be done together.)

Hmm, if it's not possible to proceed without a date via the Upload Wizard, then we should not do that indeed.

add a similar (mandatory) step to ask the user to enter the date manually

I would prefer not to do this as IMO this is the more complex option from a dev, UI and tester perspective

or use {{Upload date}} to make it clearer it's the current date

I would be in favour of this if all are agreed. @nicolas-raoul @neslihanturan ?

Using {{Upload date}} when EXIF date can't be determined sounds good to me 🙂

I just realized that things would be a bit more complicated than I said in the last comment, because it looks like it's not the current timestamp but the last modified date on the local file system that's used when EXIF timestamp is unavailable. (I was testing with newly copied files, so I didn't notice the difference, sorry.)
https://github.com/commons-app/apps-android-commons/blob/f8a8f9207028a6fb5a35483c040821f22daf755e/app/src/main/java/fr/free/nrw/commons/filepicker/UploadableFile.java#L103
Using the current date (or the upload date) instead can make sense, but that would be a change that we might want to more carefully consider.
It seems like this topic ("how to better represent timestamps from different sources") might be better discussed elsewhere, anyway, though.

Hmm, thanks for bringing that up @whym . As this only affects edge cases, I think I will go ahead and merge and release #5019 as the vast majority of cases can be handled by that, and time is of the essence. Could you create a new issue for this topic?

Should tentatively be able to do the v4.0.2 release with this by tomorrow.

@subbass1 I have released v4.0.2 with this bugfix, it should be available for beta testing on the Play Store in a few hours' time. Could you please register for beta testing, make sure the app is updated to v4.0.2 (you can check the version via "About") and test it with an edited photo? Thanks a lot!

@subbass1 The v4.0.3 release has gone through, would appreciate help with testing it. :)

Ok, will do (perhaps someone could look at my last uploads (but if I upload the same days the photos were taken one can't check it). But besides that: please look in the very annoying bug that the app stops working completely quite often. (I think you know my text facts.) Also stop/start uploading manually doesn't help. Than it's necessary to de- and reinstall completely. I'm really annoyed, can't work this way. Given the fact that this is a high end phone, working otherwise without any problems (One Plus 9) I can't see the problem. It also doesn't depend of the amount of files  uploaded simultaneously. I try to do not more than 10-15 at one step (but more would be better!). Also most of the time I restart before and don't use other apps simultaneously (besides the browser) - it doesn't help. I guess more than 60% of my uploads stop this way ..   greets Martin
Am 5. August 2022 11:34:39 MESZ schrieb Josephine Lim @.>:
@. The v4.0.3 release has gone through, would appreciate help with testing it. :)

@subbass1 Sorry, I'm not familiar with that issue - I was under the impression that you were crashing on Settings, is that not fixed now?
For the issue of the ANR (app not responding), could you create a new issue using our issue tracker so that a volunteer can take it up please? Thanks!

Just a data point to confirm the EXIF bug was fixed, a file uploaded a few days ago has a correct timestamp. (The version used was 4.0.5~f03b7dd8d.)
The wiki text says

|date={{According to Exif data|2022-08-27}}

EXIF says

Date and time of data generation	2022-08-27T13:25:08
File change date and time	2022-08-30T23:50:06

If not for the bug fix, the wiki text would have said 2022-08-30.


Nicer UI for port value input

It would be nice instead of just having small string input fields for all ports in the editor if component developers could some how provide a custom UI to promt the user for those fields.
Take for example the twitter component http://noflojs.org/library/noflo-twitter/. It requires OAuth data providing in a specific JSON format. As someone new to noflo, being presenting with a simple small input field didn't prompt me in any way as to what I needed to enter into the fields. It was only after digging into the source of the component did I discover what was needed.
It would be great if the component developer could define a custom UI to help prompt the user for the required fields, and have the UI format the value in whatever format the component requires. Ultimately it would still be using strings, but from an editors perspective, it's a much more meaningful / self explanatory UI.

Related: #184


Meta helper not working

Hi! I really like this package, but I can't seem to get the meta helper working.
My resource:
`<
namespace App\DataAccess\Resources;
use Spatie\ResourceLinks\HasLinks;
use Spatie\ResourceLinks\HasMeta;
use Illuminate\Http\Resources\Json\JsonResource;
use App\DataAccess\Resources\AreaResource;
use App\Http\Controllers\TitanController;
class TitanResource extends JsonResource
{
use HasLinks, HasMeta;
/**
 * Transform the resource into an array.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function toArray($request)
{
    $response = [
        'id' => $this->id,
        'type' => 'titans',
        'attributes' => [
            'name' => $this->name,
            'description' => $this->description,
        ],
        'links' => $this->links(TitanController::class, [
            'titan' => $this->id,
        ]),
    ];

    $response['relationships'] = $this->when($this->relationLoaded('areas'),function()
    {
        $response['areas'] = [
            'data' => AreaResource::collection($this->areas),
        ];
        return $response;
    });

    return $response;
}

public static function meta()
{
    return [
        'links' => self::collectionLinks(TitanController::class)
    ];
}

}`
My output:
{     "data": [         {             "id": 1,             "type": "titans",             "attributes": {                 "name": "Bionis",                 "description": "The first of the two clashing titans. Its body is home to all organic life forms (Homs, Noppon, animals, etc)."             },             "links": {                 "show": "http://xc-api/api/titans/1"             }         },         {             "id": 2,             "type": "titans",             "attributes": {                 "name": "Mechonis",                 "description": "The second of the two clashing titans. Its body is home to all mechanical beings, including the mechanical race known as the Mechon."             },             "links": {                 "show": "http://xc-api/api/titans/2"             }         }     ] }
Note that that the meta key is missing completely. (I manually add the top level data key after the creation of the resource.) Any suggestions?

Hi @lavdboom,
How do you use the resource within your application? Because your code looks ok to me 🤔

Hi @lavdboom,
We decided to abandon this package, you can read more about it here: https://rubenvanassche.com/laravel-resource-links-two-years-later/


Multiple subrpms with common prefix lead to conflicts, errors, "output xxx was not created"

Tested with bazel 7.2.1 and rules_pkg 1.0.0 (b4ac7e3197bc03d70d0d8d6af02c1d91ad0866e2).
I adapted the example from examples/rpm/subrpm by adding a second sub RPM with the name "subrpm2".
diff --git a/examples/rpm/subrpm/BUILD b/examples/rpm/subrpm/BUILD
index 0da73ca..3b24c68 100644
--- a/examples/rpm/subrpm/BUILD
+++ b/examples/rpm/subrpm/BUILD
@@ -39,6 +39,19 @@ pkg_sub_rpm(
     ],
 )

+pkg_files(
+    name = "second_subrpm_files",
+    srcs = ["sub2_file"],
+)
+
+pkg_sub_rpm(
+    name = "subrpm2",
+    package_name = "subrpm2",
+    summary = "Test subrpm2",
+    description = "Test subrpm2 description",
+    srcs = ["second_subrpm_files"],
+)
+
 pkg_files(
     name = "rpm_files",
     srcs = [
@@ -66,6 +79,7 @@ pkg_rpm(
     ],
     subrpms = [
         ":subrpm",
+        ":subrpm2",
     ],
 )

@@ -77,3 +91,9 @@ genrule(
     outs = ["content.txt"],
     cmd = "rpm2cpio $(locations :test-rpm) | cpio -ivt >$@",
 )
+
+genrule(
+    name = "sub2_file",
+    outs = ["sub2_file.txt"],
+    cmd = "echo sub2_file > $@",
+)

In the output we can see Saved subrpm sub RPM file twice, instead of once for subrpm and once for subrpm2. If I change the package name to second-subrpm then everything works as expected.
Saved subrpm sub RPM file to /cache_root/24aaac5cb2094aabf5993790af77bccc/sandbox/processwrapper-sandbox/25/execroot/_main/bazel-out/k8-fastbuild/bin/test-rpm-subrpm-1-0.x86_64.rpm
Saved subrpm sub RPM file to /cache_root/24aaac5cb2094aabf5993790af77bccc/sandbox/processwrapper-sandbox/25/execroot/_main/bazel-out/k8-fastbuild/bin/test-rpm-subrpm-1-0.x86_64.rpm

Full output:
$ bazel build test-rpm; ls -1 bazel-bin/*.rpm
Computing main repo mapping:
Loading:
Loading: 0 packages loaded
Analyzing: target //:test-rpm (1 packages loaded, 0 targets configured)
Analyzing: target //:test-rpm (1 packages loaded, 0 targets configured)
[0 / 1] [Prepa] BazelWorkspaceStatusAction stable-status.txt
INFO: Analyzed target //:test-rpm (1 packages loaded, 9 targets configured).
[1 / 1] checking cached actions
[7 / 8] MakeRpm test-rpm-1-0.x86_64.rpm; 0s processwrapper-sandbox
INFO: From MakeRpm test-rpm-1-0.x86_64.rpm:
Saved RPM file to /cache_root/24aaac5cb2094aabf5993790af77bccc/sandbox/processwrapper-sandbox/25/execroot/_main/bazel-out/k8-fastbuild/bin/test-rpm-1-0.x86_64.rpm
Saved subrpm sub RPM file to /cache_root/24aaac5cb2094aabf5993790af77bccc/sandbox/processwrapper-sandbox/25/execroot/_main/bazel-out/k8-fastbuild/bin/test-rpm-subrpm-1-0.x86_64.rpm
Saved subrpm sub RPM file to /cache_root/24aaac5cb2094aabf5993790af77bccc/sandbox/processwrapper-sandbox/25/execroot/_main/bazel-out/k8-fastbuild/bin/test-rpm-subrpm-1-0.x86_64.rpm
[7 / 8] MakeRpm test-rpm-1-0.x86_64.rpm; 0s processwrapper-sandbox
ERROR: /src/github.com/bazelbuild/rules_pkg/examples/rpm/subrpm/BUILD:73:8: output 'test-rpm-subrpm2-1-0.x86_64.rpm' was not created
[7 / 8] MakeRpm test-rpm-1-0.x86_64.rpm; 0s processwrapper-sandbox
ERROR: /src/github.com/bazelbuild/rules_pkg/examples/rpm/subrpm/BUILD:73:8: MakeRpm test-rpm-1-0.x86_64.rpm failed: not all outputs were created or valid
[7 / 8] MakeRpm test-rpm-1-0.x86_64.rpm; 0s processwrapper-sandbox
Target //:test-rpm failed to build
[8 / 8] checking cached actions
Use --verbose_failures to see the command lines of failed build steps.
[8 / 8] checking cached actions
INFO: Elapsed time: 0.807s, Critical Path: 0.70s
[8 / 8] checking cached actions
INFO: 4 processes: 3 internal, 1 processwrapper-sandbox.
[8 / 8] checking cached actions
ERROR: Build did NOT complete successfully
bazel-bin/test-rpm-1-0.x86_64.rpm
bazel-bin/test-rpm-subrpm-1-0.x86_64.rpm

Full contents of modified examples/rpm/subrpm/BUILD
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -*- coding: utf-8 -*-

load("@rules_pkg//pkg:mappings.bzl", "pkg_files")
load("@rules_pkg//pkg:rpm.bzl", "pkg_sub_rpm", "pkg_rpm")

pkg_files(
    name = "subrpm_files",
    srcs = [
        "BUILD",
    ],
)

pkg_sub_rpm(
    name = "subrpm",
    package_name = "subrpm",
    summary = "Test subrpm",
    description = "Test subrpm description",
    requires = [
        "somerpm",
    ],
    provides = [
        "someprovision",
    ],
    srcs = [
        ":subrpm_files",
    ],
)

pkg_files(
    name = "second_subrpm_files",
    srcs = ["sub2_file"],
)

pkg_sub_rpm(
    name = "subrpm2",
    package_name = "subrpm2",
    summary = "Test subrpm2",
    description = "Test subrpm2 description",
    srcs = ["second_subrpm_files"],
)

pkg_files(
    name = "rpm_files",
    srcs = [
        "MODULE.bazel",
        "README.md",
    ],
)

pkg_rpm(
    name = "test-rpm",
    srcs = [
        ":rpm_files",
    ],
    release = "0",
    version = "1",
    summary = "rules_pkg example RPM",
    description = "This is a package description.",
    license = "Apache License, v2.0",
    architecture = "x86_64",
    requires = [
        "somerpm",
    ],
    provides = [
        "somefile",
    ],
    subrpms = [
        ":subrpm",
        ":subrpm2",
    ],
)

# If you have rpmbuild, you probably have rpm2cpio too.
# Feature idea: Add rpm2cpio and cpio to the rpmbuild toolchain
genrule(
    name = "inspect_content",
    srcs = [":test-rpm"],
    outs = ["content.txt"],
    cmd = "rpm2cpio $(locations :test-rpm) | cpio -ivt >$@",
)

genrule(
    name = "sub2_file",
    outs = ["sub2_file.txt"],
    cmd = "echo sub2_file > $@",
)

It definitely seems to be a problem with this bit:
https://github.com/bazelbuild/rules_pkg/blob/b4ac7e3197bc03d70d0d8d6af02c1d91ad0866e2/pkg/make_rpm.py#L446-L456

@kellyma2 WDYT?

Seems roughly plausible.  I'm on holiday at the moment but will follow-up when I return.


Add MessagingUI Target

AEPMessaging UI target is added to the existing project

AEPMessagingUI has dependency on AEPMessaging
Min Deployment version of AEPMessagingUI is iOS 12.0
AEPMessagingUI will follow the same version as AEPMessaging

PodSpec and Swift Package Managers file for MessagingUI are created

Yes, will do that

Closing this PR since the decision was made to release UI code with Messaging


SDK not working with next@14. It's working fine in next@13

Describe the bug
SDK not working with next@14. It's working fine in next@13
Server
  "dependencies": {
    "@livekit/components-react": "^1.4.0",
    "@livekit/components-styles": "^1.0.7",
    "livekit-client": "^1.15.0",
    "livekit-server-sdk": "^1.2.7",
    "next": "14.0.2",
    "react": "^18",
    "react-dom": "^18"
  },
  "devDependencies": {
    "@types/node": "^20",
    "@types/react": "^18",
    "@types/react-dom": "^18",
    "autoprefixer": "^10.0.1",
    "eslint": "^8",
    "eslint-config-next": "14.0.2",
    "postcss": "^8",
    "tailwindcss": "^3.3.0",
    "typescript": "^5"
  }

Client

SDK: js

To Reproduce
Steps to reproduce the behavior:

SDK not working with next@14. It's working fine in next@13

<EMAIL_ADDRESS>Attempted import error: 'LocalParticipant' is not exported from 'livekit-client' (imported as 'LocalParticipant').

Expected behavior
SDK should work in next@14.
Screenshots

Looks like there's already an issue tracking it: https://github.com/livekit/client-sdk-js/issues/938


Added option to vary blotName in onSelect callback

I added the option to specify the blotName when calling the insertItem function in the onSelect callback. This allows us to use different Quill Blots for different denotation characters (or any other conditions you want to use).

Is there any chance to get this pr merged? We also need dynamic blotName.

If someone could resolve the conflicts, I can merge this

Resolved in #279


rfc 1291: Add libutil to scope of libc crate on Linux

The initial motivation for adding this library is to get access to
openpty(3) and forkpty(3). These simplify opening a pseudoterminal
master / slave pair. The functions are defined on Linux, OSX, FreeBSD,
NetBSD, and OpenBSD. On OS X, they are available without linking to any
additionaly libraries; on the other platforms they require linking with
-lutil.
On Linux, libutil is part of glibc, and defines 6 symbols:

forkpty
logwtmp
login_tty
openpty
login
logout

libutil is available in the base installs of Debian-, Fedora-, and
Arch-derived distributions, as well as openSUSE and Android, though on
Android the pty.h header that declares the functions seems not to be
available.  Together, these cover the DistroWatch 0 top 10
distributions.
In musl libc, openpty(3) and forkpty(3) are included in libc.a.
On NetBSD and OpenBSD, these functions are included in libutil, which
defines about 100 functions.
On FreeBSD, these functions are included in libutil, which defines about
200 functions.

r? @alexcrichton

It would be helpful to also provide some rationale as to why this new library should be picked up by default. For example it would be nice to see how compatible this is across platforms (not just Linux), across various C libraries on Linux (like MUSL), etc. It would also be useful to know whether this is available throughout various distributions of Linux.

Ah yes I meant to do that.  Is that more like what you had in mind?

Thanks @kamalmarhubi! These seem like they're widely available enough and somewhat standard enough that it appears reasonable to me to include them.

@alexcrichton what's the process on an RFC change like this?

This falls under the purview of the libs team, so we'll move this into FCP when we get a chance to get around to this (our triage meeting is on Wednesdays)

:+1: thanks for the details!

I have some reservations about this. Right now the things libc links to can reasonably be described as part of the C runtime - they are all things that a C compiler will link you to by default in some scenario - crt, compiler-rt, m, dl, pthreads. I don't know that libutil is in this same category.

@brson what do you mean "will link you to by default"? IIRC, pthreads, m, and dl all require one to provide explicit link flags on common plaftorms.

IIRC, pthreads, m, and dl all require one to provide explicit link flags on common plaftorms.

This is only true for glibc-based platforms. System.dylib, libmusl and many other saner runtimes link to everything by default.

@nagisa do those saner runtimes also link libutil (or whatever library has the symbols noted above) by default?

:bell: This RFC is now entering its week-long final comment period :bell:

The symbols in libutil for glibc are present in libc.a for musl, and at least some are available without additional linking on OS X. I tried to make this clear in the commit message; should I put that information somewhere else?

The libs team discussed this RFC during triage today and the decision was to merge. The libutil.a library seems ubiquitous enough to add and the functions are common enough too.
Thanks again for the RFC @kamalmarhubi!

yay!


Multipage doc

Hello @alexsland . This is an old issue for the web site. Is it still relevant? Can we close this issue?

Closing as obsolete (from 3 years ago).


[Feature] make generated codes from enum could be minified when not used

Search Terms
For now TypeScript will transform enum from
enum Test {
    Key = 1
}

to
var Test;
(function (Test) {
    Test[Test["Key"] = 1] = "Key";
})(Test || (Test = {}));

This result is not friendly for uglyify or tree-shaking.
When Test is not be used, the generated code block always remain as dead codes.
Suggestion
prefer to generate codes below:
var Test = /*#__PURE__*/(function () {
    var e = {}
    e[e["Key"] = 1] = "Key";
    return e
})();

Examples

The suggestion version will be removed.
Checklist
My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript / JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. new expression-level syntax)

Well I guess this is blocked because we need to be able to extend enums as well. The only way I can think of this is doing something like:
var ABC = /*@__PURE__*/(function (ABC) {
    ABC["A"] = "abc";
    ABC["B"] = "bcd";
    ABC["C"] = "cde";
    return ABC;
})(ABC || {});

ABC = /*@__PURE__*/(function (ABC) {
   ABC["D"] = "def";
   return ABC;
})(ABC || {});

for input:
enum ABC {
    A = "abc",
    B = "bcd",
    C = "cde"
}

enum ABC {
    D = "def"
}

Though terser will still not be able to remove both if we are extending the enum but atleast it would be able to remove it if we have only one declaration of the enum.
Here the key point is that the var ABC and the ABC =  need to be one statement.
Am here because my "tree-shakeability" tests just failed. 😅  (https://github.com/ritz078/pebble/pull/219)
I would be happy to contribute if you can point me to the files where modifications need to be made.

@azizhk
I have wrote a babel plugin https://github.com/morlay/babel-plugin-typescript-iife-enum to solve this.
It is work fine in my projects.

That's a neat trick @morlay,
I actually use tsc to compile and then rollup (with babel) to bundle, I'll try if I can incorporate something similar in my setup.

@azizhk since babel support typescript. we could compile all through babel.
@azizhk since babel support typescript. we could compile all through babel.

my babel configuration bellow
{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": true
        }
      }
    ]
  ],
  "plugins": [
    "babel-plugin-typescript-iife-enum",
    "@babel/plugin-transform-typescript",
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-object-rest-spread",
    "babel-plugin-pure-calls-annotation"
  ]
}

babel-plugin-pure-calls-annotation is another helper to make uglify or terser happier.
if all your named function is pure.

This is indeed a very needed feature. We have a lot of packages and we are using enums extensively. Right now, all enums from all packages are getting added to the final application bundle, even if we are not using them at all, or using only a very small subset of all possible values.

Hey folks, any updates on this one?
We are changing most of the types to be union types because of tree-shaking issues, would appreciate some support on the topic.


Add Lido to treasury investments

Added ability to convert treasury to stSol:

button "Stake on Solido"
form for proposal
creating ATA
method to create transaction with different config for mainnet and devnet

Thank you for the review nramadas! Fixed your comment
We haven't tested it yet - can you please press the button to deploy with new changes and after testing, if everything is OK, I will write you to merge

Hey @nramadas We have tested it and everything is ok :) Ready to merge


Issue 13203 - conflicting aliases allowed with static if

https://issues.dlang.org/show_bug.cgi?id=13203

Rebased on master, and ready for ddmd.

Auto-merge toggled on

Thx!


Undefined index: dataPropertyName

Please merge this PR.
#150

Thank you for fixing the issue. Merged and released with version 2.7.1.


TX Receipts and getFilterChanges responses should not return type: "mined" for each log.

Not sure where this hardcoded result came from, but it does not appear to be in the JSON/RPC spec.

If this isn't fixed in the current release, it is certainly already fixed in Ganache v7. Closing!


feat(editor): folder drag and drop

As of right now, we only support dropping files onto the editor. This adds the behavior that if you drop a folder/directory onto the editor, it will change the directory in the same way that :cd x/y/z changes the directory.

/azp run


Update headlines for Ktor Client / Json

This PR updates the the Ktor Clients "Json" page:

kotlinx.serialization is referred to in full everywhere (kotlinx is not an abbreviation for kotlinx.serialization – we have about 50 other libraries starting with kotlinx :) )
Headlines are restructured to first show the name of the library, and then the platforms for which they are available.

Thanks! Merging


Unit tests are failing

Latest master:
> Task :app:testProdDebugUnitTest

fr.free.nrw.commons.leaderboard.LeaderboardFragmentUnitTests > testMenuVisibilityOverrideVisibleWithContext FAILED
    java.lang.Exception at AndroidTestEnvironment.java:538
        Caused by: java.lang.NullPointerException at LeaderboardFragmentUnitTests.kt:232

fr.free.nrw.commons.profile.achievements.AchievementsFragmentUnitTests > testMenuVisibilityOverrideVisibleWithContext FAILED
    java.lang.Exception at AndroidTestEnvironment.java:538
        Caused by: java.lang.NullPointerException at AchievementsFragmentUnitTests.kt:375

fr.free.nrw.commons.customselector.ui.selector.ImageFragmentTest > testHandleResult FAILED
    java.lang.Exception at AndroidTestEnvironment.java:538
        Caused by: java.lang.reflect.InvocationTargetException at ImageFragmentTest.kt:128
            Caused by: java.lang.NullPointerException at ImageFragmentTest.kt:128

fr.free.nrw.commons.customselector.ui.selector.FolderFragmentTest > testHandleResult FAILED
    java.lang.Exception at AndroidTestEnvironment.java:538
        Caused by: java.lang.reflect.InvocationTargetException at FolderFragmentTest.kt:128
            Caused by: java.lang.NullPointerException at FolderFragmentTest.kt:128

@nicolas-raoul  i found these issue when i run the unit test can
i work on this issue

@nicolas-raoul i have already solved a part of this issue MUCH BEFORE , merge this pull request #4884
fr.free.nrw.commons.customselector.ui.selector.ImageFragmentTest > testHandleResult FAILED
java.lang.Exception at AndroidTestEnvironment.java:538
Caused by: java.lang.reflect.InvocationTargetException at ImageFragmentTest.kt:128
Caused by: java.lang.NullPointerException at ImageFragmentTest.kt:128
fr.free.nrw.commons.customselector.ui.selector.FolderFragmentTest > testHandleResult FAILED
java.lang.Exception at AndroidTestEnvironment.java:538
Caused by: java.lang.reflect.InvocationTargetException at FolderFragmentTest.kt:128
Caused by: java.lang.NullPointerException at FolderFragmentTest.kt:128
and this two test fail will be gone

Here is the pull request that broke the unit tests: https://github.com/commons-app/apps-android-commons/pull/4834/files

Here is the pull request that broke the unit tests: https://github.com/commons-app/apps-android-commons/pull/4834/files

yes out of the 4 test failed  the first two test failed is from this  pull request and the next two tests  failed is from my pull request of #4863 so merge #4884  and the two test failed will be gone

Thanks @Rishavgupta12345, now the remaining failing unit tests are:
fr.free.nrw.commons.leaderboard.LeaderboardFragmentUnitTests > testMenuVisibilityOverrideVisibleWithContext FAILED
    java.lang.Exception at AndroidTestEnvironment.java:538
        Caused by: java.lang.NullPointerException at LeaderboardFragmentUnitTests.kt:232

fr.free.nrw.commons.profile.achievements.AchievementsFragmentUnitTests > testMenuVisibilityOverrideVisibleWithContext FAILED
    java.lang.Exception at AndroidTestEnvironment.java:538
        Caused by: java.lang.NullPointerException at AchievementsFragmentUnitTests.kt:375

I just ran ./gradlew clean testProdDebugUnitTest in master (which has #4884 merged in already), it still fails with:
fr.free.nrw.commons.leaderboard.LeaderboardFragmentUnitTests > testMenuVisibilityOverrideVisibleWithContext FAILED
    java.lang.Exception at AndroidTestEnvironment.java:538
        Caused by: java.lang.NullPointerException at LeaderboardFragmentUnitTests.kt:232

fr.free.nrw.commons.profile.achievements.AchievementsFragmentUnitTests > testMenuVisibilityOverrideVisibleWithContext FAILED
    java.lang.Exception at AndroidTestEnvironment.java:538
        Caused by: java.lang.NullPointerException at AchievementsFragmentUnitTests.kt:375

Anyone who finds a fix, please feel free to send a pull request!
Since this is quite urgent, anyone please feel free to work on this particular even if not assigned.
Thanks in advance!

@nicolas-raoul it's an easy Fix i will raise a PR shortly

The reason tests were failing for nicolas but not failing for rishav gupta is because nicolas was testing in prod flavor and rishav was testing in beta flavor. the test was not handled yet for production flavor. I have made changes so it should work. https://github.com/commons-app/apps-android-commons/pull/4889


is .js pattern in example useful?

I'd love some user input on this. Are you applying this to JS files, as well as TS files? Is that practical?


Action cleanup

Applied mkpr on .github/workflows/ci.yml
sed /      - run: npm ci/d

:tada: This issue has been resolved in version 6.11.29 :tada:
The release is available on:

npm package (@latest dist-tag)
v6.11.29
GitHub release

Your semantic-release bot :package::rocket:


Extract PhysicalSize, LogicalSize & related data structures to a new crate?

How about a new crate on crates.io, let's call it dpi?

Why?

Instead of glutin reexporting them was the idea. ¯_(ツ)_/¯ Really minor annoyance when reading the docs, feel free to close.

Well, glutin would still be full of re-exports... it would make more sense to have a notice in glutin's top-level docs indicating as much.

Sounds very reasonable. Closing.


Arjunsingh3600 patch 1

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@5943c63). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master       #2   +/-   ##
=========================================
  Coverage          ?   96.43%
=========================================
  Files             ?        5
  Lines             ?      168
  Branches          ?        0
=========================================
  Hits              ?      162
  Misses            ?        6
  Partials          ?        0

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5943c63...34e1384. Read the comment docs.


Improve configuration

I had a lengthy discussion with @felixboehm  about the toml config file ... while I like the declarative nature of it Felix would like to see some form of dynamic configuration, so an admin can do
wget https://.../reva
reva
reva service enable ocdavsvc
reva service enable authsvc
reva service enable storageprovider --driver local

to get a working instance.
To me that is sugar on top. AFAICT the cli still needs to change the config and kick the reva process to reload the changes (or we add monitoring, but the less magic the better IMO). @labkode IIRC you mentioned reva or the os being able to queue any requests while reva is restarting / rereading the config. Could you elaborate and give an example? Maybe as a PR in the docs?
Anyway, I do agree that the single config file mixes two things that should be separate:

the services that should be started
the configuration for each service

I think we should use a config folder that contains a config file per service. Each service should write its default config if it is not present. That way the services are responsible for defining their configuration.
Reva itself should maybe write individual config files for core.toml, log.toml http.toml and grpc.toml
Maybe the services should have a subfolder in the reva config dir. That would allow them to freely choose config file names, without being able to overwrite another services config.
When using docker containers we can then mount a config dir (passing in env vars should still be possible in order to overwrite individual settings)

@butonic @felixboehm the configuration of REVA focuses on simplicity, like NGINX does, I took inspiration from it. As Jorn mentioned reva service enable authsvc is just sugar to avoid having to do:
vim /etc/revad/revad.toml
systemctl restart revad

Changes to REVA need to be driven by the configuration file, what you put in the config is what you get when you run the service. The oc model of having the DB to store important configuration items is not sysadmin-friendly at all and complicates debugging.
I think we need to strive for simplicity, it's very easy to explain that if you want X you put X in the config file. Having multiple config files like NGINX/Apache do can be considered.
NGINX provides well documented defaults when you don't set any configuration for a module, the same should apply to REVA, hence no need to have default configuration files per service.

For reloading the configuration:
./cmd/revad/revad -p revad.pid -s reload

is a TODO :)
You can just kill -s SIGHUP pid
If you are in a Docker container it will not work as the new process will be 2, and 1 will be killed which will kill the container.

ok, what are the defaults we should pick for reva and its services? by default it does not run anything. I wanted to document how to implement a storage provider and ended up explaining the config file in https://central.owncloud.org/t/digging-into-the-reva-hello-world-example-md/19896 ... only to stumble upon https://github.com/cernbox/reva/blob/master/docs/beginner-guide.md which basically does the same thing.
If we want reva a generic framework it should only render the hello world thing. However, I think it makes more sense to have it start a sensible set of services because it is inteded to be the referece implmentation of the CS3 apis. As such it should:

start ocdasvc so you can interface with existing clients via webdav
a local storage provider

with a data dir relative to the location of the executable
with inotify for file changes (to be implemented)

an authsvc

with basic auth, because oidc requires many more services
with the example users ... or with a yet to implement user backend that allows adding users with the reva cli

config file(s) should be created on first run

that is kind of the minimal config I see. @labkode @felixboehm opinions?

@butonic I agree that those basic services should be the default services so you can play with REVA out of the box.
We need to come up with a basic config file to use like prometheus tells you to do so in:
https://prometheus.io/docs/prometheus/latest/getting_started/#getting-started
The bootstrap services needs to be configured in the config file while the configuration for those can use defaults. If we lunch reva without a config file, it will assume that runs those services by defaults and you will need a negative config directive to disable default services ... and that is ugly.

@tboerger could you give us your strongest opinion on this?

FWIW, I tried creating a config file from scratch that uses the reva command. It is the bare minimum one would need to start a reva service and start messing around with it. It attempts to explain each directive used. It is the cleanest solution I've come across. The creation of this file involved digging a bit into the reva setup (loaders) and the type config ... of each service. The file can be found here, so this thread is not bloated. /cc @labkode @butonic @IljaN


Update extraction of title, price, average rating and number of ratings; other tweaks

Currently, the CSS selectors don't work for title, price, average rating or number of ratings. I use regex to extract price and average rating, which might be more consistent than the CSS selectors. To handle multiple prices, I return the minimum non-zero price, but this could be modified readily.
I've also taken the liberty of breaking out the extraction of each element into it's own function. I simplified the logic of Client._get_products by having an early return after checking valid_page, thus the big diff there. I added some comments as well.

Thank you very much for this nice work Jacob @jpeacock29 .
It seems that it gets harder and harder to avoid the captcha :(
Would you have a clever idea to include a workaround in this PR?

Perhaps a user agent string can be automatically generated and prepended to _USER_AGENT_LIST? I'd be happy to open another PR for this as I have a few more commits to push to handle price scrapping for more complex scenarios.

I don't have a fix for the user agent issue besides just expanding the provided list and hoping for the best, or adding an option for the user to pass their own. I think the pull request fulfills its original purpose now though.

Thanks @jpeacock29
Sorry for the delay ;)
I hope we'll find a way to counter the captcha protection.


Data type Int8Array conversion bug!!!

Describe the bug, including details regarding any error messages, version, and platform.
Here is my code:
`#include
#include <arrow/api.h>
#include <arrow/compute/api.h>
#include <arrow/array.h>
using namespace std;
arrow::Status RunMain() {
// row {day, month, year}
arrow::Int8Builder int8builder;
int8_t days_raw[5] = {1, 17, 12, 28, 21};
ARROW_RETURN_NOT_OK(int8builder.AppendValues(days_raw, 5));
std::shared_ptrarrow::Array days;
ARROW_ASSIGN_OR_RAISE(days, int8builder.Finish());
arrow::Int16Builder int16builder;
int16_t months_raw[5] = {1, 3, 5, 7, 1};
ARROW_RETURN_NOT_OK(int16builder.AppendValues(months_raw, 5));
std::shared_ptrarrow::Array months;
ARROW_ASSIGN_OR_RAISE(months, int16builder.Finish());
arrow::Int32Builder int32builder;
int32_t years_raw[5] = {1990, 2000, 1995, 2000, 1995};
ARROW_RETURN_NOT_OK(int32builder.AppendValues(years_raw, 5));
std::shared_ptrarrow::Array years;
ARROW_ASSIGN_OR_RAISE(years, int32builder.Finish());
std::shared_ptrarrow::Field field_day, field_month, field_year;
std::shared_ptrarrow::Schema schema;
field_day = arrow::field("Day", arrow::int8());
field_month = arrow::field("Month", arrow::int16());
field_year = arrow::field("Year", arrow::int32());
schema = arrow::schema({field_day, field_month, field_year});
std::shared_ptrarrow::RecordBatch rbatch;
rbatch = arrow::RecordBatch::Make(schema, days->length(), {days, months, years});
auto day_int8_array = std::static_pointer_castarrow::Int8Array(rbatch->column(0));
auto month_int16_array = std::static_pointer_castarrow::Int16Array(rbatch->column(1));
auto year_int32_array = std::static_pointer_castarrow::Int32Array(rbatch->column(2));
for(int64_t i = 0; i < rbatch->column(0)->length(); ++i) {
std::cout << "[day, month, year] :" <<"[" << day_int8_array->Value(i) << ", " << month_int16_array->Value(i) << ", " << year_int32_array->Value(i) << "]" << std::endl;
}
return arrow::Status::OK();
}
int main() {
arrow::Status st = RunMain();
if (!st.ok()) {
std::cerr << st << std::endl;
return 1;
}
return 0;
}
`
Running result：

Conversion is correct for Int16Array and Int32Array types, only the output result for Int8Array is incorrect.
Component(s)
C++

std::cout for uint8 seems to print chars, you can promote it to int to print it

Will close it if no further info, you can reopen it if it haven't solved.


Add usage documentation to Python tools distribution

What it says on the tin.

I just wanted to verify that you don't need to specify a .proto file or directory file to compile, I usually invoke protoc roughly as
protoc -I <Include> -python-out=<out> -python_grpc_out=<out> <Some proto file>

Nits (and brain snafu) addressed.

lgtm

Luhguhtum; marking for merge.


Send mails using celery tasks

Make sending emails asynchronous using celery tasks, according to #1153

Codecov Report

Merging #1182 into master will increase coverage by 0.08%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1182      +/-   ##
==========================================
+ Coverage    69.2%   69.29%   +0.08%
==========================================
  Files         114      115       +1
  Lines        6212     6230      +18
  Branches      754      754
==========================================
+ Hits         4299     4317      +18
  Misses       1744     1744
  Partials      169      169

Impacted Files
Coverage Δ

saleor/search/backends/elasticsearch.py
0% <ø> (ø)
:arrow_up:

saleor/product/models.py
89.27% <ø> (ø)
:arrow_up:

saleor/settings.py
87.7% <100%> (+0.63%)
:arrow_up:

saleor/celery_mail.py
100% <100%> (ø)

saleor/userprofile/management/commands/__init__.py
100% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 44726f6...e932ccc. Read the comment docs.


Option serialize/deserialize #29

Current coverage is 100.00%

Merging #30 into master will not affect coverage as of 568708c

@@            master     #30   diff @@
======================================
  Files           14      16     +2
  Stmts          214     227    +13
  Branches        50      53     +3
  Methods          0       0
======================================
+ Hit            214     227    +13
  Partial          0       0
  Missed           0       0

Review entire Coverage Diff as of 568708c

Powered by Codecov. Updated on successful CI builds.


Packaging fixes

Packaging fixes

This change is

r? @krishnaIndia
(maidsafe_highfive has picked a reviewer for you, use r? to override)

r? @krishnaIndia

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


fix(Input): onChange callback does not pass the value of the input when using Input with children

Similar to this open issue: https://github.com/Semantic-Org/Semantic-UI-React/issues/907
When using the Input component with children, you have to use the onChange callback with the child input tag, and no second data parameter is passed to the callback.
Steps to Reproduce

Create a Input with children, you must use your own  tag as per the Docs. The semantics  tag will not run the onChange callback, you must pass as an option in your  tag.
pass the onChange option with a callback option, have the callback console.log the arguments.

Expected
The onChange callback function should receive the input value as a second parameter in the callback.
Result
The callback option does not receive the value of the input as the second parameter.
Testcase
http://codepen.io/tintin301/pen/rWyBvw

Thanks for the report, this is a confirmed bug.  We are not passing any of the htmlInputProps to the input child.
Input.js
const htmlInputProps = _.pick(this.props, htmlInputPropNames)
if (onChange) htmlInputProps.onChange = this.handleChange

const ElementType = getElementType(Input, this.props)

if (children) {
  return <ElementType {...rest} className={classes}>{children}</ElementType>
}

We need to find the input child and spread the htmlInputProps on it.  We have a findByType() util in lib for this.  We simply need to find the input and spread the props on it.

See #916, will merge on pass.


var identifier has no default

Description
I'm attempting to omit the variable "identifier". The expected behavior is a randomly generated ID provided by AWS. The error I see is that identifier is a required variable.
Versions

Terraform: v1.0.0

provider registry.terraform.io/hashicorp/aws v3.47.0
provider registry.terraform.io/hashicorp/random v3.1.0

Module:

Reproduction

Steps to reproduce the behavior:
Omit idenfier to any example of launching RDS.
Expected behavior
Code passes validation and plan with an omitted identifier variable - and produces an RDS instance with a randomly assigned identifier.
Actual behavior
│ Error: Missing required argument
│
│   on rds.tf line 2, in module "rds":
│    2: module "rds" {
│
│ The argument "identifier" is required, but no definition was found.

correct - based on logic within the module, the identifier is required as a fallback name used throughout the module.  if you check main.tf for identifier you will see it used throughout and therefore the module has made this a required variable, even though the aws_db_instance resource itself allows it to be optional

@bryantbiggs - then would it be possible to update the verbiage around this variable?
https://github.com/terraform-aws-modules/terraform-aws-rds/blob/master/variables.tf#L2
"The name of the RDS instance, if omitted, Terraform will assign a random, unique identifier"
This, to me, reads like if we leave this variable blank - it will still work.

Yes! You are correct, the variable description should be updated, 100%


Add new churn calculation

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- varats/plots/repository_churn.py  1

Clones added
============
- varats/utils/git_util.py  2
- varats/plots/repository_churn.py  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- varats/plots/repository_churn.py  1

Clones added
============
- varats/utils/git_util.py  2
- varats/plots/repository_churn.py  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- varats/plots/repository_churn.py  1

Clones added
============
- varats/utils/git_util.py  2
- varats/plots/repository_churn.py  2

See the complete overview on Codacy


how to change video language?

My video has multiple language. how to change audio track?

see the api of the MediaPlayer engine(android.media.MediaPlayer exoplayer ijkplayer). in the project you can change the MediaPlayer engine which you like.  Jzvd.setMediaPlayerInterface();

Thanks for replying. But i didn't find any interface like setMediaPlayerInterface(); Could you please explain me little bit more.

see ActivityApiCustomMediaPlayer in demo


[Doc] Add Go / dependencies installation instructions

TL;DR
as title
Type

[ ] Bug Fix
[ ] Feature
[ ] Plugin

Are all requirements met?

[ ] Code completed
[ ] Smoke tested
[ ] Unit tests added
[ ] Code documentation added
[ ] Any pending items have an associated Issue

The instructions are similar to: https://github.com/ray-project/kuberay/blob/master/ray-operator/DEVELOPMENT.md#use-go-v117.
Complete description
as title
Tracking Issue
NA
Follow-up issue
NA

Hi @EngHabu, thank you for the review! Do you prefer a permanent link or a normal link?
Example:

Permanent link: https://github.com/flyteorg/flytepropeller/blob/9a4ea000af6bb7b959daa00f26abea7c2e3262e7/go.mod#L3

Normal link: https://github.com/flyteorg/flytepropeller/blob/master/go.mod#L3

Permanent Link I believe will show if there is a mismatch. What do you think?


Fix formatting of non-loopback IPv6 addresses

Hi,
Currently the ip_address_to_string function formats all IPv6 addresses (except loopback) to the form 8193::3512::0::0::0::0::0::1 (which is invalid) instead of one of the following representations:

2001:db8:0:0:0:0:0:1
2001:0db8:0000:0000:0000:0000:0000:0001
2001:db8::1 (IETF’s recommended canonical format).

I encountered the issue using Mist while binding to a specific interface. It uses ip_address_to_string to print Listening on http://[0::0::0::0::0::0::0::0]:8080 in the console on startup, which is obviously not a valid URL in this instance.
This implement RFC 5952 canonical format. Previous loopback short-hand is the default and not a special case anymore.
Please tell me if the formatting logic would be better placed in an internal module or if it’s fine as-is in the root module.

Hey, very cool!  Thank you for looking into this.  I appreciate the effort.
It looks like erlang has inet:ntoa that seems to behave somewhat similarly to what you have here.  I'm not super familiar enough with the canonical formatting to say whether it would work here.
If it does, it seems like maybe it would be nice to just replace all my (admittedly, pretty dumb) custom formatting and just use that?
Let me know what you think!

Hmm... I need to think about that.  Making it opaque kinda sucks since you couldn't pattern match on it, which maybe isn't really an issue?  I have no idea how people are using it right now 😅
I'd be okay panicking if an improper IP is passed for binding since it's only at initialization, and I'm already doing that for SSL arguments.
So it's a bit of an annoying situation.  I do feel like allowing people to construct invalid IPs is wrong, but the loss of pattern matching takes away a lot.  I don't mind the to_string returning a Result really, but it would be nice to avoid that.

I don't have a good answer for the invalid case, but that was already an issue with what was there.  Seems totally reasonable to just use what you have here.
Thank you!


How to restore placeholder?

I may be missing something obvious, but how can I restore the placeholder text? I tried setValue("") and setValue(null) to no avail. After setting the value to empty or null, clicking into and then out of the editor restores the placeholder, but how can I do it programmatically? I need to clear the editor and reset it to default, empty, placeholder state.
Thanks, this tool has been really useful.

+1

@mark222 did you ever find a way around this? I need to restore the editor/ clear editor content after submitting the form via ajax.
Thanks

Sorry ... forgot to mention. editor.setValue("") does clear the content, but placeholder doesn't show ...

I never found a way, so I went in the other direction and always setValue("") so the placeholder never shows (it was just a nice-to-have anyway).


micro-ros issue in Galactic

Jetson Nano
ROS2 Galactic
Teensy goes to the error loop (led flashes two times) or, sometimes, micro-ros agent restarts when the robot receives the goal.
Seems there isn't such error in ROS2 Foxy.
I'll really appreciate an assistance to fix it.

could you try this minimal example? https://github.com/linorobot/micro_ros_platformio

grassjelly, thanks for the prompt response.
The example is working as intended.

strange, the Teensy should be able to reconnect. It usually takes 5 to 20 seconds. Try waiting for Teensy to fully reconnect before sending the Twist commands

Sorry, probably, I didn't explained it right.
When linorobot firmware is burned the Teensy reconnects by itself. But 'falling' into error loop (or restarts the micro-ros connection) once goal is set.
The example you sent the link is working as intended, but need to reconnect the teensy each time the micro-ros started.

root@m1b3-t:/microros_ws# ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyACM0
[1647875931.952952] info     | TermiosAgentLinux.cpp | init                     | running...             | fd: 3
[1647875931.953906] info     | Root.cpp           | set_verbose_level        | logger setup           | verbose_level: 4
[1647875940.978777] info     | TermiosAgentLinux.cpp | fini                     | server stopped         | fd: 3
[1647875940.988966] info     | TermiosAgentLinux.cpp | init                     | Serial port not found. | device: /dev/ttyACM0, error 2, waiting for connection...
[1647875941.990627] info     | TermiosAgentLinux.cpp | init                     | Serial port not found. | device: /dev/ttyACM0, error 2, waiting for connection...
[1647875942.992111] info     | TermiosAgentLinux.cpp | init                     | Serial port not found. | device: /dev/ttyACM0, error 2, waiting for connection...
[1647875943.993621] info     | TermiosAgentLinux.cpp | init                     | Serial port not found. | device: /dev/ttyACM0, error 2, waiting for connection...
[1647875944.533476] info     | TermiosAgentLinux.cpp | init                     | running...             | fd: 3
[1647875946.421842] info     | Root.cpp           | create_client            | create                 | client_key: 0x50C7822F, session_id: 0x81
[1647875946.423212] info     | SessionManager.hpp | establish_session        | session established    | client_key: 0x50C7822F, address: 0
[1647875946.477200] info     | ProxyClient.cpp    | create_participant       | participant created    | client_key: 0x50C7822F, participant_id: 0x000(1)
[1647875946.483103] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x50C7822F, topic_id: 0x000(2), participant_id: 0x000(1)
[1647875946.488406] info     | ProxyClient.cpp    | create_publisher         | publisher created      | client_key: 0x50C7822F, publisher_id: 0x000(3), participant_id: 0x000(1)
[1647875946.496285] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x50C7822F, datawriter_id: 0x000(5), publisher_id: 0x000(3)
'device not found' is when I disconnect teensy

by goal, do you mean Navigation goal?

teleop is working fine

Hi @crimean7 and @grassjelly , I am facing the same problem. Were you able to find the cause and solution?


Fix asset manager deadlock on dispose and clear

A deadlock occurs when an asset manager executor thread tries to acquire the lock during a dispose() or clear() call. This PR alters these methods to only acquire the lock when required (similar to finishLoading() having no explicit lock) and yield to the pending async tasks instead.
"AssetManager@2033" daemon prio=5 tid=0x17 nid=NA waiting for monitor entry
  java.lang.Thread.State: BLOCKED
	 waiting for main@1 to release lock on <0x81d>
	  at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:145)

Huh, it seems unfair that GitHub considers you a first-time contributor; you put a bunch of work into https://github.com/libgdx/libgdx/pull/6144 and that was just changed manually. I don't know anything about deadlocks, so I hope someone else can chime in, but I will approve the GitHub workflow.

It looks good to me, let's see if @NathanSweet has objections.

Sorry for the delay! It does seem to make sense to me.


remove single-view assumption from paintImage

Fixes https://github.com/flutter/flutter/issues/117477.
Part of https://github.com/flutter/flutter/issues/116929.

@dnfield A while ago you added this code to paintImage that checks for oversized images. This debug check is the only reason, why the paintImage method needs to know the device pixel ratio, which it is currently reading from the global window singleton. That will not work in a multi window/view world. The method needs to read the dpr from the view the image is going to be drawn into. Unfortunately, it doesn't have access to that information. In this PR I changed it so that the dpr can (optionally) be passed into the method to enable the debug check and I made sure that everywhere in the framework we do pass it in. However, if somebody now calls paintImage directly without passing in the DPR, the oversized images check is disabled.
Another option would be to make passing in the dpr required. This would be a breaking change since there are two callers of this method in google3 (those could be easily updated, though). It does feel a little odd to require it just for the debug check, though.
Yet another option could be to move the check out of paintImage. However, I didn't really find a better place for it...
What are your thoughts?

"Google testing" failed because tests were run without including prerequisite https://github.com/flutter/flutter/pull/117244.

Superseded by https://github.com/flutter/flutter/pull/118721.


docs/design: Options for being outside the loadpath

Closes: #740

Checking in: what's the current state / summary here?


fix(tsi): retaining fileset should not copy pointer

Current implementation of retainFileSet is not safe because it returns p.fileSet directly. It is supposed to be protected by mutex:
func (p *Partition) retainFileSet() *FileSet {
	fs := p.fileSet
	fs.Retain()
	return fs
}

The bug may lead to deadlock if the fileset is modified while there is compaction.

The CI will success when https://github.com/influxdata/influxdb/pull/18961 is merged

@dgnorton I suppose this fix needs to be ported back to 1.7/1.8

rereview  the code, FileSet.files is actually immutable so the clone is not needed.


Volume vacuuming results in reading object timeout.

When reading a object , if the volume where this object stored in is being  vacuumed, then it may take a long time.
Volume are locked in "CommitCompact()" when committing compact.
Is it unavoidable?

@guol-fnst What exactly do you mean by may take a long time ?
It seems that the volume is not locked, but goes into read-only mode ?

@guol-fnst also, which version you are using?

version: 2.86 2.96 2.99
I was doing a test (test pattern:30% write, 70% read) using cosbench, cosbench reported reading timeout.
I make a conclusion from source code.
When committing compact, weed adds "v.dataFileAccessLock.Lock()" in CommitCompact().
When reading needles, weed adds "v.dataFileAccessLock.RLock()" in readNeedle().
If I make a mistake ,please ponit it out.

I was doing a test (test pattern:30% write, 70% read) using cosbench, cosbench reported reading timeout.

The test was without replication?

yes
We have replication in volume directory


GitHub interaction

This PR includes:

Addition of owner and repository in Library model.
Inferring those fields during compilation.
Integration of Github4s to interact with Github.
Changes in templates to show contributors, commits, links to editing, etc.

@raulraja Could you review please? Thank you.
FYI Most of these changes were reviewed in this PR: https://github.com/scala-exercises/site/pull/345

LGTM


Add releaseID option

This brings a new feature: to be able to build statically your website using a prismic release.
From prismic doc:

A release allows your team to gather a collection of changes for a future version of your whole repository. The release can then publish all the changes to all the collected documents all at the same time.

I've added a README section to hint on how to use release. The only way to get a releaseID currently is by using the REST API, as explained in the README.
We plan to add a more convenient way to get the release ID, by adding it in the prismic API browser, which is accessible from the editor. This way it would be simple to copy/paste it.

Sorry I didn't see it was already submitted here https://github.com/angeloashmore/gatsby-source-prismic/pull/108

Any thoughts on this @angeloashmore ?
Since this is all opt-in it's not risky for the plugin to integrate this change I think. And it would provide a nice feature for people who need it.
If you think this should be better explained/documented, let me know though.

@veloce Sorry for the delay, been busy with work. This looks good to me overall. I'll merge this in and package it along with the other v3.1 features (#224).
Aiming to finish that up by end of May but hopefully sooner.


chore(main): release 1.1.0

:robot: I have created a release beep boop
1.1.0

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v1.1.0
:sunflower:


Explicitly converted type map value into the slice.  Removing type conversion works.
https://play.golang.org/p/kLwlEV4WW1R
What did you see happen?
Compiler asks to file a bug report:
./prog.go:16:17: internal compiler error: panic: interface conversion: ir.Node is *ir.ConvExpr, not *ir.IndexExpr

Please file a bug report including a short program that triggers the error.
https://go.dev/issue/new

What did you expect to see?
Compilation succeeds.

CC @golang/compiler

CC @mdempsky @cuonglm

@gopherbot please backport this to go1.22, this bug was introduced during go1.22 development, causing an internal compiler error which is a serious issue.
The fix is small and safe.


initial implementation

initial implementation of the header laid out in the master branch.
Some highlights:
See "examples/example_loop" for a common usage of this library.
Argument parsing and initial memory allocation is taken care in rttest_read_args.
The code to be instrumented is passed as a function pointer to rttest_spin, which calls the function and measures scheduling jitter and pagefaults in a real-time safe way.
Teardown happens in rttest_finish.
rttest keeps track of statistics and stores parameters for different threads, but the interface to rttest does not expose the thread. It keeps an internal struct to check the thread id of the calling thread and gets/sets data for that thread accordingly.

The approach makes sense to me, though I didn't take the time to pick the code apart for logic errors.

It looks like several of the docstrings in rttest.h are out of sync with the prototypes. Otherwise lgtm

I update the docstrings and removed a few unused input parameters in ff8f0d5e0fc67d4cf57f9fc8010ef96cd48a4156

I've updated the CMakeLists to look for ament_cmake and build rttest as an ament package if it was found.


silverbullet silently died after some time of working with Internal Server Error. prob after new container version

Hi, i'm using containerized silverbullet behind caddy reverse proxy. It worked fine but recently i found out is is died. I get Internal Server Error 500 when I try to access it. I have not used it for maybe a month or so, so do not know, when exactly did it die.
Other services behind caddy working fine, also nothing is being changed on vps itself.
ssh -L 3000:<IP_ADDRESS>:3000 MY_VPS returns same error, so its not a caddy issue, but SB itself.
Restarting the container does not help
Any way I can investigate the problem?
container logs show nothing:

My guess is watchtower update broke it idk.
Info about caddy container

Can you try creating an empty folder and point it at that as /space and see if that does anything?

Hm. I'm experiencing the same problem, I think. Internal server error out of the blue. I've tried compose pulling to make sure things are up to date, I've made sure there are no permissions issues on the space dir, I've even deleted the .silverbullet-db files to let it try to rebuild things -- no go. In the logs I'm getting a
An exception was thrown as a result of invoking function showIfEnabled error: Unregistered syscall clientStore.get
Error dispatching event plug:load to treeview.showIfEnabled: Unregistered syscall clientStore.get
Error: Unregistered syscall clientStore.get
    at wa.onMessage (file:///silverbullet.js:117:27742)
    at Worker.worker.onmessage (file:///silverbullet.js:117:27261)
    at Worker.wrappedHandler (ext:deno_web/02_event.js:1401:12)
    at innerInvokeEventListeners (ext:deno_web/02_event.js:754:7)
    at invokeEventListeners (ext:deno_web/02_event.js:801:5)
    at dispatch (ext:deno_web/02_event.js:658:9)
    at Worker.dispatchEvent (ext:deno_web/02_event.js:1043:12)
    at Worker.#pollMessages (ext:runtime/11_workers.js:212:12)
    at eventLoopTick (ext:core/01_core.js:166:7)
    ```

Do you have my treeview plug installed by chance? I was getting the same error after updating to the latest edge release. When I removed that plug and restarted it worked fine. Once up-and-running, re-enabling the plug worked.
@zefhemel This is the code that seems to be causing it. But I'm not really sure why it would be doing that. My guess is that the plug is being loaded before the clientStore syscalls are registered? Is that expected behavior? Should my plug be handling this differently (or wrapping this code in a try-catch?). I saw this error at some point:
An exception was thrown as a result of invoking function showIfEnabled error: Unregistered syscall clientStore.get
dispatching event plug:load to treeview.showIfEnabled: Unregistered syscall clientStore.get

@skorphil and @SONDLecT - try deleting the _plugs/treeview.plug.js file from your space and restarting as a temporary workaround. (Once running, update your plugs and the treeview should return).

@joekrill the clientStore syscalls are only going to be available in the client (hence the name), the plug:load is going to be triggered on the server as well, so it would indeed fail with this error. Not sure what this happens now and not earlier. What you can do in your plug:load call is check the environment it's running in (system.getEnv()) to ensure it's the client where the event is triggered.

Not sure if this is helpful: I just had the same issue, when upgrading from 0.7.5 to 0.7.6. For me, downgrading to 0.7.5 again solved the problem.
Doing an Update plugs on 0.7.5 and then upgrading to 0.7.6 again worked fine.

Yeah apologies for that, totally my fault! I've fixed the treeview plug, so as long as you're on the latest version before you upgrade this shouldn't be a problem. I think this issue can be closed @skorphil.

Thanks for suggestions. Currently dont have time to kill, so havent tried these yet
I think i did install only default plugins(from onboarding files). Treeview is not a standard plugin, so prob it is not the main cause of an issue.
Anyway will disable updates for future use, cause it is a disappointing failure and do not want to get this again.
Prob it will be good idea to remove recommendation to use the watchtower from SB documentation, so new users will not face such an issues


Correct number of REWE stores in Germany

The expected number of REWE stores in Germany cites the Financial Report 2022, REWE-ZENTRALFINANZ eG.
In this, the table titled Locations as at 31 December 2022 notes 3733 german retail locations and 16 convenience locations, totalling 3749 locations.

I've applied the fix myself because I could not find out how to add it here.
I would like to thank you for pointing this out.


[Bug]: Mod Manager crashes on load with Lutris

Operating System
Linux with Wine (steam deck)
BG3 Mod Manager Version
<IP_ADDRESS>
BG3 Game Version
Full Release Patch 3 Hotfix 9(? unsure about hotfix number)
Bug Summary
I have BG3MM installed through Lutris thanks to this guide, which I followed exactly to the letter, including filepaths. Everything was working just fine, until suddenly today it would begin launching and then exit. Sometimes it seemed to fully load, but then would exit. The only logs I have access to are Lutris's, and those mentioned a FailFast something or other with exit code 512. According to a random stackoverflow thread, this is apparently a folder access error.
Someone on the above thread said that since a new version of the program had been released, it was trying to prompt me to download the new version, but couldn't open the prompt window and so would crash instead. They said it was easily solved by installing the new version and pointing Lutris to the new files.
Unfortunately, although I updated the program, it is still crashing. I did some troubleshooting before I read the comment suggesting to update BG3MM, and I think I may have broken something. I am doing a full reinstall of everything at the moment so I can at least get you some proper logs. However, I'm not the only person having this issue, according to that thread, so I am posting this now in the hopes of getting some eyes on it. I know this isn't officially supported, but perhaps you have some advice on fixing it?
I will update once the reinstall finishes and let you know if I'm still getting error 512 or if it's something different now. If I can enable debug logging in BG3MM itself, also, please let me know how!
Links
No response

Okay, I have finished the reinstallation and...everything works correctly. So I am not entirely sure what happened, but it's possible that I either accidentally corrupted my dot net install by troubleshooting (idk how but I never overestimate my incompetence), or there was just some magic in a completely fresh install.
I will leave this up in case you have further use for this information, but feel free to close it out if this is out of scope.
Also, if it helps, here is the error from the Lutris logs, although it seems to be truncated:
010c:err:event log:reporteventw l'application: bg3modmanager.exe\nframework version: v4.0.30319\ndescription: the application requested process termination through system.environment.failfast(string message).\nmessage: unrecoverable system error.\nstack:\n at system.environment.failfast(system.string)\n at system.wind"...

It has stopped working again, unfortunately. Here is the Lutris log: https://gist.github.com/katubug/9a4d146537d9877cf966194d417ec761
Back to the drawing board for me!

Hopefully final update for now. I again did a full reinstall of the BG3MM per the guide listed, and again got it to run. My guess is that there's either an issue with the wine prefix/dotnet installation recognition in the mod manager? or perhaps this is entirely a Lutris issue. I am happy to provide any further information if it would be helpful, but I'm already far beyond my wheelhouse so I can't offer much else.
Thanks for your time, and for the incredibly helpful tool!


Add HTML  tag to core components

What is the expected behaviour?
Add the HTML <param> tag, as specified here: https://www.w3schools.com/tags/tag_param.asp

Closed via #265 thanks to @marcoroth :rocket:


Doc: Update README project counts

Run ./utilities/update-readme.sh and commit updated project counts for GitHub badges.

ping @jjomier


Update CaseFolding.txt

This offers two commits: one that updates CaseFolding.txt which is a minor version bump, and one that also updates UNICODE_VERSION to a tuple (for consistency with other crates), which is a major version bump. I figure that it makes sense to provide it in separate changes so that existing crates can get the Unicode update without the major bump.

Ping @SimonSapin

Oops, sorry for the delay. Looks good, thanks!


supported consul versions

Can anyone point me to the documentation on supported versions of consul? I couldnt find it :-(

We don't have it. It's based on the support offered by the version of https://github.com/Ecwid/consul-api/ that we use.

We don't have it. It's based on the support offered by the version of https://github.com/Ecwid/consul-api/ that we use.


Should combine 'service.yaml' and 'deployment.yaml' into single file.

In GitLab by @yhua123 on Nov 24, 2017, 09:19
Add ldap auth:
make/board.cfg
make/prepare
make/templates/apiserver/env
src/vendor/gopkg.in/asn1-ber.v1/
src/vendor/gopkg.in/ldap.v2/
src/vendor/vendor.json
src/common/model/ldap.go
src/apiserver/main.go
src/apiserver/service/auth/ldapauth.go
src/common/utils/config.go
src/apiserver/main.go
src/apiserver/controller/auth.go
src/apiserver/controller/base.go
src/apiserver/controller/user.go

In GitLab by @sokril on Nov 8, 2019, 07:41
Allocate to the next sprint

In GitLab by @yhua123 on Nov 8, 2019, 07:41
allocate to 12-2

In GitLab by @yhua123 on Nov 8, 2019, 07:41
no plan fix it

In GitLab by @sokril on Nov 8, 2019, 08:14
closed

In GitLab by @sokril on Nov 8, 2019, 08:14
assigned to @wknet123


(v4) back port fix for CVE-2022-23535

Backport the fix for CVE-2022-23535 to v4 (we cannot upgrade to v5 yet)
See #2466
Integrating those 2 changes in v4 branch
https://github.com/mbdavid/LiteDB/commit/4382ff4dd0dd8b8b16a4e37dfd29727c5f70f93f
https://github.com/mbdavid/LiteDB/commit/d72c6774e6a13de2cfcd7d477d3575efeb75c8f2

Hello, just so you know I probably made the same MR here : https://github.com/mbdavid/LiteDB/pull/2424

Imho the fix is incomplete. There are many more potential dangerous gadgets to be used. The best thing to do would probably be to support type white-list or filters.


Confusing "No event for the day detected" for there are all-day events

Hi, I recently want to use Google Calendar to manage my yearly long term plan.
So i set up two events on Google Calendar that are all-day and repeat everyday. The events' setup looks like:

But when I click the plugin to sync the events, the name of the calendar in plugin setting would appear but disappear in a very sort time(less than a second), then these messages appear:

I open the developer tool, find that there is a http request with data responded:

I believe that I haven’t added support for recurring events yet which is likely the root of the issue. If I get the chance I’ll add support for them over the week. As a stepping stone you could try just copy pasting the events for at least this week until I add support for recurring events, or alternatively, you could use the logseq recurrence plugin. Sorry for the inconvenience
On 22 Feb 2022, 12:08 PM +0400, sunaiwen @.***>, wrote:

Hi, I recently want to use Google Calendar to manage my yearly long term plan.
So i set up two events on Google Calendar that are all-day and repeat everyday. The events' setup looks like:
But when I click the plugin to sync the events, these messages appear:
I open the developer tool, find that there is a http request with data responded:
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Sorry for the delay, latest version should support this feature!

Hi!
Still do not get recurring meetings. I do get everything else. Doesn't matter am I the owner of the event or not.

Even in the latest version? Could you try setting something for like 12 noon just to test. May be a time zone issue
On 27 Apr 2022, 10:44 AM +0400, Tapio N @.***>, wrote:

Hi!
Still do not get recurring meetings. I do get everything else. Doesn't matter am I the owner of the event or not.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

Hmm, might be something related to time zones. Some of the recurring meetings are popping up. Like the ones which are around 12.
But in the morning, there are two
one starting 9:30 - 9:45
And next one 9:45 - 10:00
Sometimes the first one appears sometimes not.
Maybe something with overlapping meetings or when having such "back-to-back" ones?

Should be fixed now  @Taapsa

Does the time show up properly when inserting them? If it's possible. Could you also share a link to a sample calendar that showcases this problem.
On 28 Apr 2022, 1:24 PM +0400, Tapio N @.***>, wrote:

Hmm, might be something related to time zones. Some of the recurring meetings are popping up. Like the ones which are around 12.
But in the morning, there are two
one starting 9:30 - 9:45
And next one 9:45 - 10:00
Sometimes the first one appears sometimes not.
Maybe something with overlapping meetings or when having such "back-to-back" ones?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>


I put my wife first part of the email and it showed of twice.

Bug description
Put here a clear and concise description of what the bug is
Screenshots
If applicable, add screenshots to help explain your problem
Steps to reproduce

Error is thrown

I got like a set yesterday but it said no socket to log in