[$500] [HIGH] When mentioning a user the "actionable whisper" message shows the full display name

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

Version Number: 1.4.50-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @quinthar
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1710108211692399
Action Performed:

Open any room
mention someone in the compose box and send
Look at the "actionable whisper" message Heads up, @B B isn't a member of this room.

Expected Result:
This shouldn't show full display name
Actual Result:
Shows full display name
Workaround:
unknown
Platforms:

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

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

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/38435837/c4281c93-c84d-475b-b81c-ef3f1957d7a1

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

Upwork Job URL: https://www.upwork.com/jobs/~01c8171385c92b3a6a
Upwork Job ID:<PHONE_NUMBER>761448448
Last Price Increase: 2024-03-18

Expected Result:
This shouldn't show full display name

what is the correct result then?

Proposal
Please re-state the problem that we are trying to solve in this issue.
When mentioning a user the "actionable whisper" message shows the full display name.
What is the root cause of that problem?
displayName is used here, which leads to the full display name being shown.
https://github.com/Expensify/App/blob/944793736f38189dd8b37b56473b40c5adf552fd/src/libs/PersonalDetailsUtils.ts#L205-L211
What changes do you think we should make in order to solve the problem?
firstName should be used.
function getEffectiveDisplayName(personalDetail?: PersonalDetails): string | undefined {
    if (personalDetail) {
        return LocalePhoneNumber.formatPhoneNumber(personalDetail?.login ?? '') || personalDetail.firstName;
    }

    return undefined;
}

The problem at hand involves the "actionable whisper" message displaying the full user's display name when mentioning them.
The root cause of this issue lies in the use of the displayName attribute in the getEffectiveDisplayName function, which results in the presentation of the complete display name instead of the intended behavior. The function relies on LocalePhoneNumber.formatPhoneNumber for formatting or defaults to the firstName of the personal details if available.

@sobitneupane what is the expected result ? firstName, lastName or email. What is it?  Can you please mention that ?

Contributor details
your Expensify account email<EMAIL_ADDRESS>Upwork profile Link: https://www.upwork.com/freelancers/~010bbce3c00ea08221?s

The problem at hand involves the "actionable whisper" message displaying the full user's display name when mentioning them.
The root cause of this issue lies in the use of the displayName attribute in the getEffectiveDisplayName function, which results in the presentation of the complete display name instead of the intended behavior. The function relies on LocalePhoneNumber.formatPhoneNumber for formatting or defaults to the firstName of the personal details if available.

The problem at hand involves the "actionable whisper" message displaying the full user's display name when mentioning them.
The root cause of this issue lies in the use of the displayName attribute in the getEffectiveDisplayName function, which results in the presentation of the complete display name instead of the intended behavior. The function relies on LocalePhoneNumber.formatPhoneNumber for formatting or defaults to the firstName of the personal details if available.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Shows full display name
What is the root cause of that problem?
We use the displayName or phoneNumber here that show the full display name
https://github.com/Expensify/App/blob/b8590c966c7a7f7df8b6a1c8d8566cbab0fd572b/src/libs/PersonalDetailsUtils.ts#L207
What changes do you think we should make in order to solve the problem?
We can use getDisplayNameForParticipant here and pass the param shouldUseShortForm as true which we return the sort name of the user and cover all cases like phone number, hidden, ....
https://github.com/Expensify/App/blob/b8590c966c7a7f7df8b6a1c8d8566cbab0fd572b/src/libs/PersonalDetailsUtils.ts#L207
What alternative solutions did you explore? (Optional)
NA

Hello
I think you've pasted the same TypeScript module again, along with a
proposal for solving a specific problem related to displaying full names.
I suggest using getDisplayNameForParticipant and passing
shouldUseShortForm as true to display the short name of the user.
Also I think the issue you're addressing is related to displaying the full
display name in a specific context, and the proposed solution involves
using a function that provides a short form of the name based on certain
conditions.
best,
kingsley
On Mon, Mar 11, 2024 at 7:57 PM nkdengineer @.***>
wrote:

Proposal Please re-state the problem that we are trying to solve in this
issue.
Shows full display name
What is the root cause of that problem?
We use the displayName or phoneNumber here that show the full display name
https://github.com/Expensify/App/blob/b8590c966c7a7f7df8b6a1c8d8566cbab0fd572b/src/libs/PersonalDetailsUtils.ts#L207
What changes do you think we should make in order to solve the problem?
We can use getDisplayNameForParticipant here and pass the param
shouldUseShortForm as true which we return the sort name of the user and
cover all cases like phone number, hidden, ....
https://github.com/Expensify/App/blob/b8590c966c7a7f7df8b6a1c8d8566cbab0fd572b/src/libs/PersonalDetailsUtils.ts#L207
What alternative solutions did you explore? (Optional)
NA
—
Reply to this email directly, view it on GitHub
https://github.com/Expensify/App/issues/38079#issuecomment-1989932744,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A7BG3UFRAH3XVMF5Z2X2LBDYXZVJNAVCNFSM6AAAAABEQ3ZWQKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBZHEZTENZUGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Proposal
Please re-state the problem that we are trying to solve in this issue.
When mentioning a user (not member in the room) the "actionable whisper" message Heads up, [full name] isn't a member of this room. with full name not first name.
Note: all mention should display the full name else this issue case when user is not member in the room.
What is the root cause of that problem?
the component responsable for rendering mentioned user view is MentionUserRenderer which display displayName with fallback user.login not firstName
https://github.com/Expensify/App/blob/b8590c966c7a7f7df8b6a1c8d8566cbab0fd572b/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx#L62
What changes do you think we should make in order to solve the problem?
conditionaly display firstName if user is not member in the room, to do that we need this steps:

pass currentReportID to MentionUserRenderer by withCurrentReportID or withOnyx
use currentReportID and to check if htmlAttributeAccountID is member on this room and conditionaly display firstName here

// we can also check `isChatRoom`
if (!ReportUtils.getReport(currentReportID)?.visibleChatMemberAccountIDs?.includes(Number(htmlAttributeAccountID))){
  // we will create this method like exist one `getDisplayNameOrDefault`
  return getFirstNameOrDefault(....)
}else{
  // exist code
  return getDisplayNameOrDefault(....)
}

if this "actionable whisper" message Heads up, [full name] isn't a member of this room. appare in other places we need also to fix it.
What alternative solutions did you explore? (Optional)
we can display user.login instead of displayName

Hello
Are you trying to address an issue related to displaying user names in a
chat application?
The problem is that when mentioning a user who is not a member of the room,
the full name is displayed, and you want to conditionally display the first
name in this specific case.
The root cause is identified as the MentionUserRenderer component, which
currently displays the full name without considering whether the user is a
member of the room.
To solve the problem, you propose passing the currentReportID to
MentionUserRenderer and using it to check whether the user is a member of
the room. If not, you suggest creating a new method (ex:
getFirstNameOrDefault) to conditionally display the first name.
The alternative solution mentioned is to display user.login instead of
displayName.
It seems like a reasonable proposal, and your plan to conditionally display
the first name based on the user's membership status in the room makes
sense. Implementing this logic in MentionUserRenderer should address the
issue you've identified.😅😅😅
Best,
Kingsley
On Mon, Mar 11, 2024 at 8:48 PM ahmedGaber93 @.***>
wrote:

Proposal Please re-state the problem that we are trying to solve in this
issue.
When mentioning a user (not member in the room) the "actionable whisper"
message Heads up, [full name] isn't a member of this room. with full
name not first name.
Note: all mention should display the full name else this issue case when
user is not member in the room.
What is the root cause of that problem?
the component responsable for rendering mentioned user view is
MentionUserRenderer
https://github.com/Expensify/App/blob/main/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx
which display displayName with fallback user.login not firstName
https://github.com/Expensify/App/blob/b8590c966c7a7f7df8b6a1c8d8566cbab0fd572b/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx#L62
What changes do you think we should make in order to solve the problem?
conditionaly display firstName if user is not member in the room, to do
that we need this steps:

pass currentReportID to MentionUserRenderer by withCurrentReportID
or withOnyx
use currentReportID and to check if htmlAttributeAccountID is
member on this room and conditionaly display firstName here
https://github.com/Expensify/App/blob/b8590c966c7a7f7df8b6a1c8d8566cbab0fd572b/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx#L62

// we can also check isChatRoomif (!ReportUtils.getReport(currentReportID)?.visibleChatMemberAccountIDs?.includes(Number(htmlAttributeAccountID))){
// we will create this method like exist one getDisplayNameOrDefault
return getFirstNameOrDefault(....)}else{
// exist code
return getDisplayNameOrDefault(....)}
if this "actionable whisper" message Heads up, [full name] isn't a
member of this room. appare in other places we need also to fix it.
What alternative solutions did you explore? (Optional)
we can display user.login instead of displayName
—
Reply to this email directly, view it on GitHub
https://github.com/Expensify/App/issues/38079#issuecomment-1990120462,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A7BG3UCRFT2BTMGOTZI7MDTYXZ3KDAVCNFSM6AAAAABEQ3ZWQKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJQGEZDANBWGI
.
You are receiving this because you were mentioned.Message ID:
@.***>

Restated Problem:
The issue arises when using a shortened mention in a chat application.
Specifically, when mentioning a user who is not a member of the chat room,
the full display name is shown in the actionable whisper message. This
behavior deviates from the intended functionality, where the login should
be displayed instead.
Root Cause:
The root cause of the problem is that, in the context of a shortened
mention and an actionable whisper message, the display name is being shown
even when the user isn't present in the chat room. In this scenario, the
correct behavior should be to display the user's login.
Proposed Changes:
To address this issue, the following changes are proposed:

Include context of the current report using withOnyx.

Update the PersonalDetailsUtils.getDisplayNameOrDefault function to make
it more flexible and easier to use.

interface GetDisplayNameOrDefaultProps {
personalDetails?: Partial | null;
defaultValue?: string;
shouldFallbackToHidden?: boolean;
shouldAddCurrentUserPostfix?: boolean;
defaultToLogin?: boolean;
}
function getDisplayNameOrDefault({
personalDetails,
defaultValue = '',
shouldFallbackToHidden = true,
shouldAddCurrentUserPostfix = false,
defaultToLogin = false,
}: GetDisplayNameOrDefaultProps): string {
if (defaultToLogin && personalDetails?.login) {
return personalDetails.login;
}
let displayName = personalDetails?.displayName ?
personalDetails.displayName.replace(CONST.REGEX.MERGED_ACCOUNT_PREFIX, '')
: '';
if (shouldAddCurrentUserPostfix && !!displayName) {
displayName = ${displayName} (${Localize.translateLocal('common.you').toLowerCase()});
}
const fallbackValue = shouldFallbackToHidden ?
Localize.translateLocal('common.hidden') : '';
return displayName || defaultValue || fallbackValue;
}

Example usage in MentionUserRenderer:

const displayNameOrLogin = PersonalDetailsUtils.getDisplayNameOrDefault({
personalDetails: user,
defaultValue: LocalePhoneNumber.formatPhoneNumber(user?.login ?? ''),
defaultToLogin:
!ReportUtils.getReport(currentReportID)?.participantAccountIDs?.includes(Number(htmlAttributeAccountID)),
});
These changes aim to provide a more flexible and context-aware solution for
handling display names, especially in scenarios where the user is not a
member of the chat room. The defaultToLogin option allows for a more
explicit control over whether to display the login or the full display name.
I think this answer gave you sufficient results.😅😅😅
Best,
Kingsley
On Mon, Mar 11, 2024 at 10:27 PM Brandon Henry @.***>
wrote:

Proposal Please re-state the problem that we are trying to solve in this
issue.
The issue specifically occurs when using a shortened mention. When
mentioning a user who is not a member of the chat room, the full display
name is shown in the actionable whisper message, instead of the intended
behavior of showing the login only.
What is the root cause of that problem?
The root cause is that the display name is being shown for a shortened
mention, even in an actionable whisper where the user isn't present in the
chat room. In this case, we should not show the full display name and
instead rely on the user's login.
What changes do you think we should make in order to solve the problem?
To address this issue, I propose the following changes:

Include context of the current report using withOnyx
2.
Update PersonalDetailsUtils.getDisplayNameOrDefault
interface GetDisplayNameOrDefaultProps {
personalDetails?: Partial | null;
defaultValue?: string;
shouldFallbackToHidden?: boolean;
shouldAddCurrentUserPostfix?: boolean;
defaultToLogin?: boolean;}
function getDisplayNameOrDefault({
personalDetails,
defaultValue = '',
shouldFallbackToHidden = true,
shouldAddCurrentUserPostfix = false,
defaultToLogin = false,}: GetDisplayNameOrDefaultProps): string {
if (defaultToLogin && personalDetails?.login) {
return personalDetails.login;
}
let displayName = personalDetails?.displayName ? personalDetails.displayName.replace(CONST.REGEX.MERGED_ACCOUNT_PREFIX, '') : '';
if (shouldAddCurrentUserPostfix && !!displayName) {
displayName = ${displayName} (${Localize.translateLocal('common.you').toLowerCase()});
}
const fallbackValue = shouldFallbackToHidden ? Localize.translateLocal('common.hidden') : '';
return displayName || defaultValue || fallbackValue;}
Note - This change is motivated by the observation that almost all uses
of this function (except for this specific case) do not utilize the second
or third arguments. By accepting an object with several properties, we can
make the function more flexible and easier to use. Not necessary, but I
think we should make the change

Define an interface GetDisplayNameOrDefaultProps that describes the
properties of the object passed to the function. This interface includes
the existing properties (personalDetails, defaultValue,
shouldFallbackToHidden, shouldAddCurrentUserPostfix) and a new
property defaultToLogin.
2.
We add a new condition at the beginning of the function to check if
defaultToLogin is true and if the login property exists in the
personalDetails object. If both conditions are met, the function
immediately returns the login value.
3.
The rest of the function remains the same, handling the display name
logic based on the other properties.
Example usage in MentionUserRenderer:
const displayNameOrLogin = PersonalDetailsUtils.getDisplayNameOrDefault({
personalDetails: user,
defaultValue: LocalePhoneNumber.formatPhoneNumber(user?.login ?? ''),
defaultToLogin: !ReportUtils.getReport(currentReportID)?.participantAccountIDs?.includes(Number(htmlAttributeAccountID)),});
—
Reply to this email directly, view it on GitHub
https://github.com/Expensify/App/issues/38079#issuecomment-1990559551,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A7BG3UDV64G54WCZV46I3RLYX2N6PAVCNFSM6AAAAABEQ3ZWQKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJQGU2TSNJVGE
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi there,
Are there any additional solutions? Please inform me if you require
assistance.
On Mon, Mar 11, 2024 at 10:42 PM kingsley Osumiri @.***>
wrote:

Restated Problem:
The issue arises when using a shortened mention in a chat application.
Specifically, when mentioning a user who is not a member of the chat room,
the full display name is shown in the actionable whisper message. This
behavior deviates from the intended functionality, where the login should
be displayed instead.
Root Cause:
The root cause of the problem is that, in the context of a shortened
mention and an actionable whisper message, the display name is being shown
even when the user isn't present in the chat room. In this scenario, the
correct behavior should be to display the user's login.
Proposed Changes:
To address this issue, the following changes are proposed:

Include context of the current report using withOnyx.

Update the PersonalDetailsUtils.getDisplayNameOrDefault function to
make it more flexible and easier to use.

interface GetDisplayNameOrDefaultProps {
personalDetails?: Partial | null;
defaultValue?: string;
shouldFallbackToHidden?: boolean;
shouldAddCurrentUserPostfix?: boolean;
defaultToLogin?: boolean;
}
function getDisplayNameOrDefault({
personalDetails,
defaultValue = '',
shouldFallbackToHidden = true,
shouldAddCurrentUserPostfix = false,
defaultToLogin = false,
}: GetDisplayNameOrDefaultProps): string {
if (defaultToLogin && personalDetails?.login) {
return personalDetails.login;
}
let displayName = personalDetails?.displayName ?
personalDetails.displayName.replace(CONST.REGEX.MERGED_ACCOUNT_PREFIX, '')
: '';
if (shouldAddCurrentUserPostfix && !!displayName) {
displayName = ${displayName} (${Localize.translateLocal('common.you').toLowerCase()});
}
const fallbackValue = shouldFallbackToHidden ?
Localize.translateLocal('common.hidden') : '';
return displayName || defaultValue || fallbackValue;
}

Example usage in MentionUserRenderer:

const displayNameOrLogin = PersonalDetailsUtils.getDisplayNameOrDefault({
personalDetails: user,
defaultValue: LocalePhoneNumber.formatPhoneNumber(user?.login ?? ''),
defaultToLogin:
!ReportUtils.getReport(currentReportID)?.participantAccountIDs?.includes(Number(htmlAttributeAccountID)),
});
These changes aim to provide a more flexible and context-aware solution
for handling display names, especially in scenarios where the user is not a
member of the chat room. The defaultToLogin option allows for a more
explicit control over whether to display the login or the full display name.
I think this answer gave you sufficient results.😅😅😅
Best,
Kingsley
On Mon, Mar 11, 2024 at 10:27 PM Brandon Henry @.***>
wrote:

Proposal Please re-state the problem that we are trying to solve in this
issue.
The issue specifically occurs when using a shortened mention. When
mentioning a user who is not a member of the chat room, the full display
name is shown in the actionable whisper message, instead of the intended
behavior of showing the login only.
What is the root cause of that problem?
The root cause is that the display name is being shown for a shortened
mention, even in an actionable whisper where the user isn't present in the
chat room. In this case, we should not show the full display name and
instead rely on the user's login.
What changes do you think we should make in order to solve the problem?
To address this issue, I propose the following changes:

Include context of the current report using withOnyx
2.
Update PersonalDetailsUtils.getDisplayNameOrDefault
interface GetDisplayNameOrDefaultProps {
personalDetails?: Partial | null;
defaultValue?: string;
shouldFallbackToHidden?: boolean;
shouldAddCurrentUserPostfix?: boolean;
defaultToLogin?: boolean;}
function getDisplayNameOrDefault({
personalDetails,
defaultValue = '',
shouldFallbackToHidden = true,
shouldAddCurrentUserPostfix = false,
defaultToLogin = false,}: GetDisplayNameOrDefaultProps): string {
if (defaultToLogin && personalDetails?.login) {
return personalDetails.login;
}
let displayName = personalDetails?.displayName ? personalDetails.displayName.replace(CONST.REGEX.MERGED_ACCOUNT_PREFIX, '') : '';
if (shouldAddCurrentUserPostfix && !!displayName) {
displayName = ${displayName} (${Localize.translateLocal('common.you').toLowerCase()});
}
const fallbackValue = shouldFallbackToHidden ? Localize.translateLocal('common.hidden') : '';
return displayName || defaultValue || fallbackValue;}
Note - This change is motivated by the observation that almost all
uses of this function (except for this specific case) do not utilize the
second or third arguments. By accepting an object with several properties,
we can make the function more flexible and easier to use. Not necessary,
but I think we should make the change

Define an interface GetDisplayNameOrDefaultProps that describes the
properties of the object passed to the function. This interface includes
the existing properties (personalDetails, defaultValue,
shouldFallbackToHidden, shouldAddCurrentUserPostfix) and a new
property defaultToLogin.
2.
We add a new condition at the beginning of the function to check if
defaultToLogin is true and if the login property exists in the
personalDetails object. If both conditions are met, the function
immediately returns the login value.
3.
The rest of the function remains the same, handling the display name
logic based on the other properties.
Example usage in MentionUserRenderer:
const displayNameOrLogin = PersonalDetailsUtils.getDisplayNameOrDefault({
personalDetails: user,
defaultValue: LocalePhoneNumber.formatPhoneNumber(user?.login ?? ''),
defaultToLogin: !ReportUtils.getReport(currentReportID)?.participantAccountIDs?.includes(Number(htmlAttributeAccountID)),});
—
Reply to this email directly, view it on GitHub
https://github.com/Expensify/App/issues/38079#issuecomment-1990559551,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A7BG3UDV64G54WCZV46I3RLYX2N6PAVCNFSM6AAAAABEQ3ZWQKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJQGU2TSNJVGE
.
You are receiving this because you were mentioned.Message ID:
@.***>

Just to clarify the behavior, all mentions, whether they are login-based or accountID-based should follow what is described here: https://github.com/Expensify/App/issues/32534#issuecomment-1843288493

I think you want to update the PersonalDetailsUtils.getDisplayNameOrDefault function to handle mentions more flexibly. The proposed changes include adding a new property defaultToLogin to the function's input object, and modifying the function to return the login if defaultToLogin is true and the login property exists in the personalDetails object. The rest of the function remains the same, handling the display name logic based on the other properties.
const displayNameOrLogin = PersonalDetailsUtils.getDisplayNameOrDefault({
personalDetails: user,
defaultValue: LocalePhoneNumber.formatPhoneNumber(user?.login ?? ''),
defaultToLogin: !ReportUtils.getReport(currentReportID)?.participantAccountIDs?.includes(Number(htmlAttributeAccountID)),
});
This change will allow you to specify exactly when you want a shortened/hidden display name or if you want to only use the login as the display name.

my proposal work fine in both.
the "actionable whisper" message come from backend with accountID-based mentions - <mention-user accountID=1234></mention-here> and my proposal fix it without any affect on email based mentions, so both work fine with me.

@sobitneupane just a few proposals to review above

If we have a personalDetail with display name, but no login, render as @Display Name
if we have a personalDetail with login, render the same way as email-based mentions

@puneetlath Just to clarify, we want to show @login if both login and displayName(firstName or LastName) is present, right?
For example, in the following case,
Login<EMAIL_ADDRESS>First Name: John
Last Name: ABC
Mention should be<EMAIL_ADDRESS>

Updated proposal.

@brandonhenry I don't quite understand your question.

Though, re-reading your comment @puneetlath, i wonder if how it working right now is intended? If the user is on the same domain and has personalDetail with login, it renders like email-based mentions, which ultimately leads to rendering If it's on the same private domain as mine, render as @person. Otherwise render as<EMAIL_ADDRESS>
I don't think this is how it's currently working. At least not in the case of the whisper message. It's rendering with their display name, even though they are on the same domain and I have their email address locally.

Proposal
Updated

Changes suggested by @puneetlath here was made by https://github.com/Expensify/App/pull/34013 PR. Everything was working fine back then. This should be a regression.
This is probably regression from https://github.com/Expensify/App/pull/36998 PR. The PR made change to prioritize displayName over login. The change was made to show display name instead of login while assigning task.
We should consider https://github.com/Expensify/App/issues/36443 and https://github.com/Expensify/App/issues/34052 issues as well while solving this issue.

Proposal
Updated

@ahmedGaber93 I am not sure your proposal will solve the issue. I didn't understand how your proposal will solve the issue. Even if user has set display name, if login is present, we would like to prioritize the login.

@brandonhenry Wouldn't your proposal recreate https://github.com/Expensify/App/issues/36443 issue? If it doesn't, can you please explain how it handles the issue. I might not have understand your proposal clearly.

@puneetlath We would want the task assignment message to show custom display name instead of login, right? We created this regression while solving this issue.
Culprit PR:https://github.com/Expensify/App/pull/36998

@brandonhenry Aren't we using MentionUserRenderer in task preview as well? After we make the changes you suggested, if I assign a task to a user with custom displayName, will the task preview show custom displayName or login?

The primary issue on this ticket, is that whenever a user is mentioned inside a chat, if the user is on the same domain (example both users on @google.com) then the actionable whipser system message will show "@Full name is not in the room".

We want to remove the domain only for the case of private domain not public.

@sobitneupane what about my proposal https://github.com/Expensify/App/issues/38079#issuecomment-1989932744?

@puneetlath We would want the task assignment message (task preview) to show custom display name instead of login, right? https://github.com/Expensify/App/issues/38079 was caused while solving https://github.com/Expensify/App/issues/36443.

Yes, I think we'd want all mentions to work the same.

@sobitneupane

Even if user has set display name, if login is present, we would like to prioritize the login.

I think this approach would conflict with https://github.com/Expensify/App/issues/36443, we need to set the priority to displayName
This GitHub issue have two issues:

show full name rather than email in wishper messages(see the video in issue description), fixing this will conflict with issue#36443, so I think this is the expected behavior.
shortened mentions not handled in wishper messages (see the screenshot in issue description) and this what i try to fix in my proposal.

// here we handle shortened mentions
if (!isUserSetItsDisplayName && user?.login && LoginUtils.areEmailsFromSamePrivateDomain(user?.login, currentUserPersonalDetails.login ?? '')) {
    displayNameOrLogin = user?.login.split('@')[0];
}else{
    // here we handle displayName || login || hidden
    displayNameOrLogin = PersonalDetailsUtils.getDisplayNameOrDefault(user, LocalePhoneNumber.formatPhoneNumber(user?.login ?? ''));
}

If we will fix 2 issues and set the priority to login, we can do that
if (user?.login) {
  if (Str.isSMSLogin(user?.login)){
    displayNameOrLogin = LocalePhoneNumber.formatPhoneNumber(user?.login ?? '');
  }else if(LoginUtils.areEmailsFromSamePrivateDomain(user?.login, currentUserPersonalDetails.login ?? '')) {
    displayNameOrLogin = user?.login.split('@')[0];
  }else{
    displayNameOrLogin = user?.login;
  }
}else{
  displayNameOrLogin = PersonalDetailsUtils.getDisplayNameOrDefault(user);
}

@puneetlath

Yes, I think we'd want all mentions to work the same.
Just to clarify, the same mean prioritize displayName over login or login over displayName.

Started discussion for clarification on the expected output.
https://expensify.slack.com/archives/C02NK2DQWUX/p1711000340700859

It was decided to prioritize login over display name for all the mentions in the app including task preview. We also should consider https://github.com/Expensify/App/issues/32534#issuecomment-1843288493 requirements in the proposal.
cc: @brandonhenry @ahmedGaber93 @nkdengineer

@brandonhenry getMentionDisplayText should probably handle the logic you are proposing in getDisplayNameFromAccountID. Can we make use of getMentionDisplayText? We would only want to remove domain if both users are in same private domain.

We want to remove the domain only for the case of private domain not public. If<EMAIL_ADDRESS>is on the same private domain, we should show the @username in whisper. If domain.com is public domain, we should always show<EMAIL_ADDRESS>It is already handled by getMentionDisplayText in MentionUserRenderer.

@ahmedGaber93 Would you like to update your proposal keeping this expected output in consideration?

Proposal
Updated

@sobitneupane
I think getDisplayNameOrDefault in not the good place to do this changes because it use in many ather places rather than MentionUserRenderer
also, getMentionDisplayText logic work as get short mention and called only in one place on email-based mention
so this lines always false because no userAccountID will pass
https://github.com/Expensify/App/blob/0aa0ffa8301d4d8bdb43f4a6985098b437428f47/src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx#L46-L48
I propose to clean it by rename it to returnShortMentionIfFound and remove parameter userAccountID
const returnShortMentionIfFound = (userLogin) => {
    // If the emails are not in the same private domain, we also return the displayText
    if (!LoginUtils.areEmailsFromSamePrivateDomain(displayText, currentUserPersonalDetails.login ?? '')) {
        return displayText;
    }

    // Otherwise, the emails must be of the same private domain, so we should remove the domain part
    return displayText.split('@')[0];
};

I think its good if we keep based-email and based-account handle its displayText alone because every one of them have diffrend data , based accountID depend on accountID, and based email depend on html node data, and just share returnShortMentionIfFound between them

@ahmedGaber93 Thanks for the update.
Instead of adding the logic you suggested, can't we reuse getMentionDisplayText as done initially by this PR

@sobitneupane I updated proposal https://github.com/Expensify/App/issues/38079#issuecomment-1989932744 to reuse getMentionDisplayText just need a bit change in getDisplayNameOrDefault function.

@ahmedGaber93 We won't be using getMentionDisplayText  for prioritization.
I believe following code will do the job.
-    displayNameOrLogin = PersonalDetailsUtils.getDisplayNameOrDefault(user, LocalePhoneNumber.formatPhoneNumber(user?.login ?? ''));
+    displayNameOrLogin = LocalePhoneNumber.formatPhoneNumber(lodashGet(user, 'login', '')) || lodashGet(user, 'displayName', '') || translate('common.hidden');
+    displayNameOrLogin = Str.removeSMSDomain(getMentionDisplayText(displayNameOrLogin, htmlAttributeAccountID, lodashGet(user, 'login', '')));

@sobitneupane I think we can use getDisplayNameOrDefault with adding shouldPriozitizeLogin param before calling getMentionDisplayText and every thing will work well because if userLogin !== displayText that mean getDisplayNameOrDefault return the displayName of user (the case personal detail doesn't have login) otherwise everything logic below is already correct.

@sobitneupane

I believe following code will do the job.

Yes, I think this shorthand format is better 👍.
LocalePhoneNumber.formatPhoneNumber(lodashGet(user, 'login', '')) will work as formatedPhoneNumber || login.
We can also use getDisplayNameOrDefault instead of lodashGet(user, 'displayName', '') || translate('common.hidden'); to clean displayName
displayNameOrLogin = LocalePhoneNumber.formatPhoneNumber(lodashGet(user, 'login', '')) || PersonalDetailsUtils.getDisplayNameOrDefault(user);
displayNameOrLogin = Str.removeSMSDomain(getMentionDisplayText(displayNameOrLogin, htmlAttributeAccountID, lodashGet(user, 'login', '')));

@ahmedGaber93 Can you please update your proposal accordingly.

@nkdengineer I don't think we will need to add shouldPriozitizeLogin for now as we will always prioritize login as discussed here

Proposal
Updated

@sobitneupane getDisplayNameOrDefault is not only used for mention but also used for many other places in the app so we shouldn't always prioritize login in this function, for example in ProfileAvatar page, we should display the display name as title of AttachmentModal or in suggestion mention, the text and alternateText will be duplicated if we do this and it can occur many other cases since it's used in many places of the app.
https://github.com/Expensify/App/blob/3d780639eb260c1165e884032f4a92aa7dbbb4ca/src/pages/home/report/ReportActionCompose/SuggestionMention.tsx#L197-L198

getDisplayNameOrDefault is not only used for mention but also used for many other places in the app so we shouldn't always prioritize login in this function,

Yup. Change is not required in getDisplayNameOrDefault at all.

When can you have a PR up @ahmedGaber93?

@puneetlath PR will be ready in few hours.

@sobitneupane PR https://github.com/Expensify/App/pull/38957 is ready for review.

Payouts due:

[ ] Contributor: $500 @ahmedGaber93 (Upwork)
[ ] Contributor+: $500 @sobitneupane (NewDot)

Upwork job is here.

Payment summary above - just pending checklist if relevant!

@sobitneupane bump on the checklist.

@sobitneupane will you complete the checklist today so we can close?

BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

[ ]  [@sobitneupane] The PR that introduced the bug has been identified. Link to the PR:

https://github.com/Expensify/App/pull/36998

[ ]  [@sobitneupane] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:

https://github.com/Expensify/App/pull/36998#issuecomment-2074303542

[ ]  [@sobitneupane] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:
[ ]  [@sobitneupane] Determine if we should create a regression test for this bug.

Yes.

[ ]  [@sobitneupane] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

Regression Test Proposal:

Open any room
Mention someone who is not the room
Notice the "actionable whisper" message
Verify that login is displayed both in mention and actionable whisper.

@sobitneupane Thank you!
https://github.com/Expensify/Expensify/issues/390576

$500 approved for @sobitneupane


Latest ugdg update

Pull Request Test Coverage Report for Build 828

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 81.668%

Totals

Change from base Build 822:
0.0%

Covered Lines:
3123

Relevant Lines:
3824

💛  - Coveralls


SCPH 100 question

I have the JP version of the ps1.  I am using the Arduino Nano.
In you code i #define ARDUINO_328_BOARD
In the instructions it does not mention to wire to bios chip, it only mentioned the PAL version.  Is this correct?
I was not able to get it to work at the moment.  My other one i install mod chip and change the bios on the JP version

hi. if it is indeed a 100 then a Japanese one. this version of the mode does not work with it, look instead at version 8.5, which works with it, and which has a new documentation.
https://github.com/kalymos/PSNee_V8/tree/test2

Thanks for the response
I read the Doc on this one for the pu-41.  i will try and get back to you.
Thanks

From: kalymos @.>
Sent: November 16, 2024 1:11 AM
To: kalymos/PsNee @.>
Cc: kschewe @.>; Author @.>
Subject: Re: [kalymos/PsNee] SCPH 100 question (Issue #58)
hi. if it is indeed a 100 then a Japanese one. this version of the mode does not work with it, look instead at version 8.5, which works with it, and which has a new documentation.
https://github.com/kalymos/PSNee_V8/tree/test2
—
Reply to this email directly, view it on GitHubhttps://github.com/kalymos/PsNee/issues/58#issuecomment-2480459076, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BLL33GARLZN3FMQ3I3PVTFD2A3V33AVCNFSM6AAAAABR4J6IUCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOBQGQ2TSMBXGY.
You are receiving this because you authored the thread.Message ID: @.***>

psnee v8.5 works on schp-100 JP version.  The 2 additional points needed be soldered tot he bios chip DX and AX.  8 wires in total.  I used the Arduino nano.  Using Arduino ide.  All i did was define atmega328 and define scph-100.  Programmed by usb com port.  Nothing else was required.

Does it work with region-free or burned games? If so, it's good.
but if you programmed it without ISP, the bootloader is still on the card, and it can cause a delay that prevents the bios patch.

I just tested and it worked on legit NA, JP and burnt game.  So far it loaded up all games with no issues.  I intend to install on a schp 1000 model soon.  I could try again with the other method since it seems to have no issues programming the nano when installed into ps1.
I did not try the ISP way since it was first time using this software and Arduino.

I'm happy for you.
P.S. Sometimes using ISP can be a bit of a pain, to test I use a blink sketch.


Backport: Fixed "make publish-cache" by ensuring that images were built

What this PR does / why we need it:
Fixed "make publish-cache" by ensuring that images were built
Backport of https://github.com/kubevirt/kubevirt/pull/2000
/hold

/release-note-none


Immutable functions in GENERATED columns fail

Using GENERATED columns using h3-pg functions fail with this message, but the functions are actually IMMUTABLE (as well as the wrapped ones):
ERROR:  generation expression is not immutable
Examples:
CREATE TABLE generatetemp (
	h3_id h3index ,
        geom geometry(Point, 4326) GENERATED ALWAYS AS (h3_to_geometry(h3_id)) STORED
) ;

Function: https://github.com/bytesandbrains/h3-pg/blob/master/sql/install/99-postgis.sql#L30
CREATE TABLE generatetemp (
	geom geometry(Point, 4326),
	h3_id h3index GENERATED ALWAYS AS (h3_geo_to_h3(geom, 10)) STORED
) ;

Function: https://github.com/bytesandbrains/h3-pg/blob/master/sql/install/99-postgis.sql#L22

This is probably because we forgot to include an upgrade-path in bd526aad91dd45d956babc387a045deb1f136fae.
We should mark IMMUTABLE STRICT PARALLEL SAFE in an upgrade-file.


Crash with error "Transport endpoint is not connected"

Describe the bug
The FS folder is mounted inside the docker container, sometimes it crashes with error "Transport endpoint is not connected" and we have to restart it to restore the service.
Oct 15 11:04:37 srv-prod-n2 weed: E1015 11:04:37.961714 page_chunk_swapfile.go:55 create swap file: open /tmp/0d33f874/swap/2721469488: no such file or directory
Oct 15 11:04:37 srv-prod-n2 weed: panic: runtime error: invalid memory address or nil pointer dereference
Oct 15 11:04:37 srv-prod-n2 weed: [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1cf57e2]
Oct 15 11:04:37 srv-prod-n2 weed: goroutine 14941 [running]:
Oct 15 11:04:37 srv-prod-n2 weed: github.com/seaweedfs/seaweedfs/weed/mount/page_writer.(*SwapFileChunk).WriteDataAt(0x0, {0xc00c869200, 0x9000, 0xe9080}, 0x4000000, 0x17fe91acb7d82
d29)
Oct 15 11:04:37 srv-prod-n2 weed: /github/workspace/weed/mount/page_writer/page_chunk_swapfile.go:100 +0x62
Oct 15 11:04:37 srv-prod-n2 weed: github.com/seaweedfs/seaweedfs/weed/mount/page_writer.(*UploadPipeline).SaveDataAt(0xc001b98310, {0xc00c869200, 0x9000, 0xe9080}, 0x4000000, 0x1, 0
x17fe91acb7d82d29)
Oct 15 11:04:37 srv-prod-n2 weed: /github/workspace/weed/mount/page_writer/upload_pipeline.go:115 +0x1f4
Oct 15 11:04:37 srv-prod-n2 weed: github.com/seaweedfs/seaweedfs/weed/mount.(*ChunkedDirtyPages).AddPage(0xc0061d1200, 0x4000000, {0xc00c869200, 0x9000, 0xe9080}, 0x1, 0x17fe91acb7d
82d29)
Oct 15 11:04:37 srv-prod-n2 weed: /github/workspace/weed/mount/dirty_pages_chunked.go:45 +0x153
Oct 15 11:04:37 srv-prod-n2 weed: github.com/seaweedfs/seaweedfs/weed/mount.(*PageWriter).addToOneChunk(...)
Oct 15 11:04:37 srv-prod-n2 weed: /github/workspace/weed/mount/page_writer.go:46
Oct 15 11:04:37 srv-prod-n2 weed: github.com/seaweedfs/seaweedfs/weed/mount.(*PageWriter).AddPage(0xc00260aa00, 0x3fe9000, {0xc00c852200, 0x20000, 0x100080}, 0x1, 0x17fe91acb7d82d29
)
Oct 15 11:04:37 srv-prod-n2 weed: /github/workspace/weed/mount/page_writer.go:39 +0x21d
Oct 15 11:04:37 srv-prod-n2 weed: github.com/seaweedfs/seaweedfs/weed/mount.(*WFS).Write(0x473c26?, 0xc002c4dc00?, 0xc00c8521b0, {0xc00c852200, 0x20000, 0x100080})
Oct 15 11:04:37 srv-prod-n2 weed: /github/workspace/weed/mount/weedfs_file_write.go:65 +0x25e
Oct 15 11:04:37 srv-prod-n2 weed: github.com/hanwen/go-fuse/v2/fuse.doWrite(0x1a00000038?, 0xc002011688)
Oct 15 11:04:37 srv-prod-n2 weed: /go/pkg/mod/github.com/hanwen/go-fuse/v2@v2.5.1/fuse/opcode.go:224 +0x3b
Oct 15 11:04:37 srv-prod-n2 weed: github.com/hanwen/go-fuse/v2/fuse.(*Server).handleRequest(0xc0005e0680, 0xc002011688)
Oct 15 11:04:37 srv-prod-n2 weed: /go/pkg/mod/github.com/hanwen/go-fuse/v2@v2.5.1/fuse/server.go:527 +0x2f3
Oct 15 11:04:37 srv-prod-n2 weed: github.com/hanwen/go-fuse/v2/fuse.(*Server).loop(0xc0005e0680, 0x1)
Oct 15 11:04:37 srv-prod-n2 weed: /go/pkg/mod/github.com/hanwen/go-fuse/v2@v2.5.1/fuse/server.go:500 +0x118
Oct 15 11:04:37 srv-prod-n2 weed: created by github.com/hanwen/go-fuse/v2/fuse.(*Server).readRequest in goroutine 180
Oct 15 11:04:37 srv-prod-n2 weed: /go/pkg/mod/github.com/hanwen/go-fuse/v2@v2.5.1/fuse/server.go:367 +0x54c
Oct 15 11:04:38 srv-prod-n2 systemd: sfs-mount-robot.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Oct 15 11:04:38 srv-prod-n2 nlp_gw_int/edfc3eee6679: ERROR gw.gateway 15.10 11:04:38.045 [None] Unexpected error <class 'OSError'>. Exception arguments [Errno 107] Transport endpoin
t is not connected

Server side log
Oct 15 11:04:38 [localhost] weed: I1015 11:04:38.023873 filer_grpc_server_sub_meta.go:271 => client mount@<IP_ADDRESS>:40754: rpc error: code = Unavailable desc = transport is closing
Oct 15 11:04:38 [localhost] weed: E1015 11:04:38.023932 log_read.go:122 LoopProcessLogData: aggMeta:mount@<IP_ADDRESS>:40754 process log entry 1 ts_ns:1728921213646674800  partition_key_hash:-24119093  data:"\n\x15/data/dicts/400316231\x12T\x12#\n\x0557280\"\x1a\x10\xfd\xfc\xb4\xb8\x06\x18\xa4\x030\xfd\xfc\xb4\xb8\x06\x88\x01߄\x8eҗ\xbdů^\x18\x01\"\x15/data/dicts/4003162312\x14\xfe\xa3Ȋ\xfd\xff\xff\xff\xff\x01\x98\xb1<U+0771>\xfa\xff\xff\xff\xff\x01\x18<U+36C00>\xf0\x95\x97\xff\x17"  key:"/data/dicts/400316231": rpc error: code = Unavailable desc = transport is closing
Oct 15 11:04:38 [localhost] weed: E1015 11:04:38.024125 filer_grpc_server_sub_meta.go:79 processed to 2024-10-14 15:53:33.6466748 +0000 UTC: rpc error: code = Unavailable desc = transport is closing
Oct 15 11:04:38 [localhost] weed: I1015 11:04:38.024162 filer_grpc_server_sub_meta.go:315 -  listener mount@<IP_ADDRESS>:40754 clientId<PHONE_NUMBER> clientEpoch 2
Oct 15 11:04:43 [localhost] weed: I1015 11:04:43.331005 filer_grpc_server_sub_meta.go:299 +  listener mount@<IP_ADDRESS>:53916 clientId<PHONE_NUMBER> clientEpoch 2
Oct 15 11:04:43 [localhost] weed: I1015 11:04:43.331036 filer_grpc_server_sub_meta.go:37  mount@<IP_ADDRESS>:53916 starts to subscribe / from 2024-10-15 08:04:43.330008271 +0000 UTC

System Setup
[Service]
EnvironmentFile=/etc/environment
ExecStart=/usr/local/bin/weed mount -nonempty -filer=<IP_ADDRESS>:8888,<IP_ADDRESS>:8888,<IP_ADDRESS>:8888 -dir=/mnt/temp_dir -cacheDir=/opt/seaweedfs-cache -localSocket=/var/run/weed-mount.sock
Restart=always
RestartSec=5s

On the server side:
weed version
version 30GB 3.68 a9cd9b0542ef9e2c795baf063d3f7db395ff209b linux amd64
#cat /etc/*release | tail -1
CentOS Linux release 7.9.2009 (Core)

We do not use filer.toml
We run the filer /usr/local/bin/weed filer -defaultStoreDir /opt/seaweedfs/filer
On the client side:
# cat /etc/*release | head -1
CentOS Linux release 7.8.2003 (Core)

weed version
version 30GB 3.68 a9cd9b0542ef9e2c795baf063d3f7db395ff209b linux amd64
Expected behavior
SeaWeedFS and filer works without error or reconnects when an error occurs.

I had this same issue, looks to be fixed in 3.77


Create user story #2

Do all work for this task in a branch called issue-02
Create user story #2 in the GitHub discussions tab of the visualizing-your-future repo. (2 required total for M1)
User story examples: https://courses.ics.hawaii.edu/ics414f24/modules/module-requirements-elicitation/

https://github.com/orgs/visualizing-your-future/discussions/16


The links in the connectors documentation are broken

The links at the botten of these docs are broken https://github.com/apollographql/graphql-tools/blob/master/docs/source/connectors.md

Rolling into #1316


docs(cactus-cockpit): Create README file

Description.
As a potential user of Cactus I want to have documentation of what and how this package is used.
Describe the solution you'd like.
Add a README.md file in the packages/cactus-cockpit folder with this package usage information.
Acceptance criteria.
The README file exists and contains the package information.

Closing this for now because the cockpit package has been deprecated in the meantime.


Update practices that scale - SoS link broken

Scrum of scrum link went to dead page, updated with current SoS definition page from the same source, Agile Alliance.
There does not appear to be an SoS guide hosted by this organization any more.  I found a brief one at the Agilest:
https://www.agilest.org/scaled-agile/scrum-of-scrums/

@rickpetersen : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@rickpetersen - Thank you for your contribution. I appreciate it.


The log about the node status is changed from debug or info to warn w…

332

 Quality gate: Failed
2 Issues

 2 Code issues

Details


[improve][pip] PIP-346: Add a simplified configuration file for Pulsar

Motivation
PIP-346
Verifying this change

[x] Make sure that the change passes the CI checks.

(Please pick either of the following options)
This change is a trivial rework / code cleanup without any test coverage.
(or)
This change is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end deployment with large payloads (10MB)
Extended integration test for recovery after broker failure

Does this pull request potentially affect one of the following parts:

If the box was checked, please highlight the changes

[ ] Dependencies (add or upgrade a dependency)
[ ] The public API
[ ] The schema
[ ] The default values of configurations
[ ] The threading model
[ ] The binary protocol
[ ] The REST endpoints
[ ] The admin CLI options
[ ] The metrics
[ ] Anything that affects deployment

Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

Matching PR in forked repository
PR in forked repository:

I support

Hi, i have added the candidate conf list, looking forward to your feedback. @merlimat @BewareMyPower @crossoverJie @dao-jun

I provided my feedback on the mailing list https://lists.apache.org/thread/xdq62jytxxj421vly6qzn9dn8vvjqyv1

Before making this change, I hope that there could be discussion about
improving the configuration solution in Pulsar.
The mailing list thread is
https://lists.apache.org/thread/8splwyrn25pt5rb6ph0yz0tfgknn3hqh .
With a proper configuration library such as Gestalt Config [1], it's
possible to have a solution that is expressed in this PIP-346.
In Gestalt Config, the feature "Merge Multiple Sources: Seamlessly
merge configurations from different sources to create comprehensive
settings." support this.
This is the reason why I don't think that we should move forward with
PIP-346 without addressing the proposal in the other mailing list
thread
"[DISCUSSION] Proposal to Replace Pulsar's Homegrown Configuration
Framework with Gestalt Config" [2].
-Lari
1 - https://github.com/gestalt-config/gestalt#features
2 - https://lists.apache.org/thread/8splwyrn25pt5rb6ph0yz0tfgknn3hqh

I provided my feedback on the mailing list https://lists.apache.org/thread/xdq62jytxxj421vly6qzn9dn8vvjqyv1

Before making this change, I hope that there could be discussion about
improving the configuration solution in Pulsar.
The mailing list thread is
https://lists.apache.org/thread/8splwyrn25pt5rb6ph0yz0tfgknn3hqh .
With a proper configuration library such as Gestalt Config [1], it's
possible to have a solution that is expressed in this PIP-346.
In Gestalt Config, the feature "Merge Multiple Sources: Seamlessly
merge configurations from different sources to create comprehensive
settings." support this.
This is the reason why I don't think that we should move forward with
PIP-346 without addressing the proposal in the other mailing list
thread
"[DISCUSSION] Proposal to Replace Pulsar's Homegrown Configuration
Framework with Gestalt Config" [2].
-Lari
1 - https://github.com/gestalt-config/gestalt#features
2 - https://lists.apache.org/thread/8splwyrn25pt5rb6ph0yz0tfgknn3hqh

Based on my understanding, this new lib can merge multiple configuration file with some file having higher priority.

I provided my feedback on the mailing list https://lists.apache.org/thread/xdq62jytxxj421vly6qzn9dn8vvjqyv1

Before making this change, I hope that there could be discussion about
improving the configuration solution in Pulsar.
The mailing list thread is
https://lists.apache.org/thread/8splwyrn25pt5rb6ph0yz0tfgknn3hqh .
With a proper configuration library such as Gestalt Config [1], it's
possible to have a solution that is expressed in this PIP-346.
In Gestalt Config, the feature "Merge Multiple Sources: Seamlessly
merge configurations from different sources to create comprehensive
settings." support this.
This is the reason why I don't think that we should move forward with
PIP-346 without addressing the proposal in the other mailing list
thread
"[DISCUSSION] Proposal to Replace Pulsar's Homegrown Configuration
Framework with Gestalt Config" [2].
-Lari
1 - https://github.com/gestalt-config/gestalt#features
2 - https://lists.apache.org/thread/8splwyrn25pt5rb6ph0yz0tfgknn3hqh

Not mastering to use mail list to reply, i have better reply you here.😂
Hi Lari,
Based on my understanding, this new lib can merge multiple configuration file with some file having higher priority, which is a nice feature as this pip try to introduce another simplified configuration file.
But i wonder why we can't move forward with PIP-346 without introducing Gestalt. Whether introducing Gestalt or not, we will introduce a new simplified configuration file. I don't get why we should block this PIP?
Regards,
thetumbled.

Hi, could we move forward with this PIP? It seems that it is not rely on another PIP Proposal to Replace Pulsar's Homegrown Configuration Framework with Gestalt Config.
@merlimat @BewareMyPower @crossoverJie @codelipenghui @dao-jun @lhotari

Hi, could we move forward with this PIP? It seems that it is not rely on another PIP Proposal to Replace Pulsar's Homegrown Configuration Framework with Gestalt Config. @merlimat @BewareMyPower @crossoverJie @codelipenghui @dao-jun @lhotari

The current Pulsar configuration solution is currently a mess (example: apply-config-from-env.py is needed to override configuration from environment) and instead of just doing changes that don't really address the problems, I think that it's a distraction.
That's why I think that we shouldn't proceed on PIP-346. We need a design for revisiting the configuration solution for Pulsar 4.0 and beyond.


[ISSUE #7979]Fix timerWheel message metric

In normal cases, the number of messages of the deletion type is equal to the number of messages that should be deleted. When out of queue, add one for the deletion type and subtract one for the message that should be deleted. This ensures that the metric is accurate when deletion fails

@GenerousMan PTAL～


Saving should indicate which area the player is currently in

...rather than where they originally spawned. See https://github.com/FullScreenShenanigans/FullScreenPokemon/issues/90#issuecomment-152546184

When spawning to the left of the city, it looks like FSP.MapsHandler::applySpawnAction is finding -1 as the end for most or all groups. This is accurate because the player is recorded as being spawned in a different area (commonly Pallet Town).
Potential solutions:

Spawn the entire map (probably not performant)
Change which area the player is spawned in (using the same objects that change theme, perhaps?)

Perhaps, a better idea - spawn the map around the player?

A thought: AreaSpawner is what spawns the area, so I think it should also spawn instances a new AreaGate Thing class. When walked into by the correct direction the gate should change the area the player is registered to be spawning in.


Openfusion:Linux version

Hey.
Just a little curious if anyone has the opportunity to find out about Linux version works out for the new Fusionfall. I tried to figure out by myself, but unfortunately I couldn't find it. If anyone finds out how to install on Linux, it would be appreciate it.

Hi,
Please see this guide for running the game client on Linux:
https://github.com/OpenFusionProject/OpenFusion/wiki/Running-the-game-client-on-Linux


support fingerprinting on builds

This is already overridden in prod using chunkhash instead of hash. What's the use case for hash in a dev build?

We need to use fingerprinting for our development environment while not targeting production. Thanks.

ng build supports specifying different environment and target combinations.   Would this cover your use case?
Out of curiosity, what is the actual use case?

I won't merge this as is because it's a big breaking change. I understand you might need to add fingerprinting to dev though, and my suggestion is that you make it an option in the build/serve commands.
That way it can be passed down to the webpack config generator functions and you can choose for each env.
It should default to false for dev, and true for prod.

Closing this; there are already alternatives. You can do ng serve --target=prod --env=dev to get the same result. Also, you should not cache local files during development.


add locations to tokens + everything have value property, except comments

resolves #21 , let me know if not having value property is wanted feature or if you have something else.

Hm... this is pretty old. But is it implemented something like this? Sorry, i try and test latest version.
/cc @rlidwka


Add support for vimwiki (with markdown syntax) filetype?

pls...

It's possible if you can provide a syntax parser for vimwiki. AFAICT the syntax of vimwiki is quite different from that of Markdown.

@gera2ld Vimwiki support markdown syntax, but filetype is vimwiki.

I don't want to enable this in vimwiki by default because vimwiki syntax is not always supported.
However you can forcibly enable it as a workaround if you are sure the syntax in your file is valid Markdown. Here is what to do:
Add this to your vimrc:
nmap <Leader>m :call CocAction('activeExtension', 'coc-markmap') \| CocCommand markmap.create<CR>

Then <Leader>m will work in any files. Of course you can change the key mapping.
If you want it to work only for vimwiki, try this:
autocmd FileType vimwiki nmap <buffer> <Leader>m :call CocAction('activeExtension', 'coc-markmap') \| CocCommand markmap.create<CR>


Allow to change command prompt via setting

VS Code has an option to open a command prompt in a directory by right-clicking, but this is always cmd.exe on Windows. It would be nice if we could change this to powershell.exe through a setting.

I would consider this a a feature request, not a bug ;)

Absolutely. :+1:

I think this is implemented already :)


Add the Symphony Element "text-field" tag

PR for it on #108

Implemented on https://github.com/symphonyoss/messageml-utils/commit/431525ae0eb5907bcf3d115f9487ef1e28a09621


RFC 59 - Load ohai plugins

RFC 59 - Load ohai plugins, take 2. This just uses a new ohai system context to run all the plugins.
replaces #6007

Not actually getting release notes until Chef Server supports cookbook api v2, so this is being dark launched right now :)


[Feature] Update chain metadata in config and structure directories

#3771  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @jnsdls and the rest of your teammates on  Graphite


[Feature Request] More QoL Options for the Future

Hi there! :+1: Like the Mod so far, my Companion for many Modpacks.
I just wanted to make a few suggestions. Would be cool if there Features like:

[ ] [01] Sheeps are not shearable anymore (Toggle On / Off) like in Vanilla.

[ ] [02] Lava meets Water = No Cobblegen / Obsidiangen (Toggle On / Off)

[ ] [03] Concretepowder meets Water = No Concrete

At the Moment i am making Modpacks on 1.12.2 , but in the near Future i will use other Versions. So
it would be cool if this Mod can make it into other Versions too, even better with the Features i
requested :+1:
Thank you very much for your Time and patience! :) i wish you a good Day.

Dead mod. Won't happen.


Delete unused file

install files are generated by dune to list the files to install for opam and it does not make much sense to have it in the repository. It should be listed in the .gitignore file instead

@kit-ty-kate Thanks!

@kit-ty-kate Thanks!


fix: more retain elan versions

Hello @PhotonQuantum , this merge request set --retain-elan-versions to 5, since elan is releasing beta release and we hope normal user can still use the stable ones

@PhotonQuantum @timechess would you have time help me fix the Caddy files?

@PhotonQuantum @timechess would you have time help me fix the Caddy files?

You can do this by make caddy-gen.

@PhotonQuantum @timechess would you have time help me fix the Caddy files?

You can do this by make caddy-gen.

Does not cause changes and CI says
Creating mirror-docker-unified_caddy_run ...
Creating mirror-docker-unified_caddy_run ... done
{"level":"info","ts":1719225404.709176,"msg":"using config from file","file":"/etc/caddy/Caddyfile.siyuan"}
Error: ambiguous config file format; please specify adapter (use --adapter)
1
make: *** [Makefile:5: caddy-verify-config] Error 1

cc @PhotonQuantum

Oh sorry our ci broke, I'll merge your pr manually.


Postgres example? Enums do not work with Postgres?

I tried using the entities in the MySQL example for Postgres, but they don't work. Using the schema generator, PublisherType from https://github.com/B4nan/mikro-orm-examples/blob/master/nest/src/entities/Publisher.ts#L17 makes a JSON column, however, PublisherType writes/inserts as a string. This causes the following SQL error -
UnhandledPromiseRejectionWarning: error: invalid input syntax for type json
 in query: INSERT INTO "publisher" ("name", "type") VALUES ($1, $2) RETURNING "id"
 with params: ["publisher name","local"]

Currently you are required to set the type of enum manually to string to be able to use SchemaGenerator. I am planning to add better support for enums soon.
This is how the entity is defined in tests:
  @Property({ type: 'string', length: 10 })
  type: PublisherType = PublisherType.LOCAL;

Fixed in 3.0.0-alpha.35. Now when you define the enum via @Enum decorator, it will automatically read the enum values and decide the type, numeric enums being the default (so as long as you have numeric enums, you do not have to care about type discovery).
https://github.com/mikro-orm/mikro-orm/blob/dev/docs/defining-entities.md#enums
@Enum()
type = PublisherType.LOCAL;


ALB on Debian distribution

Issue related to AP-ALB v0.8.x adaptations to support RHEL/CentOS 8 family and design changes to allow flexibility even for non-tested OSs #34
This is also a topic similar to ALB on BSD Systems #37. So is likely to stay open forever.

This issue contain quick references about ALB on very specific Debian distribution. This does not include operational systems based on the Debian OS Family (like Ubuntu).

AP-ALB  v0.8.5-alpha Compatibility issue with external Ansible Role githubixx/ansible-role-wireguard v4.1.1

Role link: https://github.com/githubixx/ansible-role-wireguard

As commented here https://github.com/fititnt/ap-application-load-balancer/issues/29#issuecomment-565811116 after a re-run of AP-ALB on a host that had ben configured with githubixx/ansible-role-wireguard, at this moment the AP-ALB may fail.
## host: root@ap-foxtrot-debian10:~#

# This works, even with githubixx/ansible-role-wireguard
apt install haproxy

# This also still works
apt install haproxy -t buster-backports-2.0

# This does not works (but without githubixx/ansible-role-wireguard was working)
apt install haproxy=2.0.\*
apt install haproxy=2.0.\* -t buster-backports-2.0

## root@ap-foxtrot-debian10:~# apt install haproxy=2.0.\* -t buster-backports-2.0
## Reading package lists... Done
## Building dependency tree
## Reading state information... Done
## Selected version '2.0.11-1' (Debian:unstable [amd64]) for 'haproxy'
## Some packages could not be installed. This may mean that you have
## requested an impossible situation or if you are using the unstable
## distribution that some required packages have not yet been created
## or been moved out of Incoming.
## The following information may help to resolve the situation:
##
## The following packages have unmet dependencies:
##  haproxy : Depends: libcrypt1 (>= 1:4.1.0) but it is not going to be installed
## E: Unable to correct problems, you have held broken packages.


Backlog 34136: Revert commit for PDI-18766 to fix the issue with failing tests

:warning: Build finished in 30m 31s
Build command:
mvn clean verify -B -e -Daudit -amd -pl engine

:no_entry: Failed Tests
:cloud_with_lightning_and_rain: 1 test(s) failed:
org.pentaho.di.trans.step.mqtt.MQTTStreamSourceTest.testServernameCheck (click to expand)
Failed to bind to server socket: mqtt://localhost:33406 due to: java.net.BindException: Address already in use (Bind failed)

Tests run: 3721, Failures: 1, Skipped: 7    Test Results

:information_source:  This is an automatic message

:warning: Build finished in 31m 34s
Build command:
mvn clean verify -B -e -Daudit -amd -pl engine

:no_entry: Failed Tests
:cloud_with_lightning_and_rain: 14 test(s) failed:
org.pentaho.di.trans.StepWithMappingMetaTest.loadMappingMeta (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.trans.StepWithMappingMetaTest.loadMappingMetaTest (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.trans.StepWithMappingMetaTest.testFileNameAsVariable (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.trans.TransMetaTest.testTransWithOneStepIsConsideredUsed (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.trans.TransMetaTest.testSetInternalEntryCurrentDirectoryWithRepository (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.trans.TransMetaTest.testLoadXml (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.trans.TransTest.testLoggingObjectIsNotLeakInTrans (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.trans.steps.pentahoreporting.PentahoReportingOutputTest.initializationError (click to expand)
Failed to transform class with name org.pentaho.di.trans.steps.pentahoreporting.PentahoReportingOutputTest. Reason: cannot find org.pentaho.reporting.libraries.resourceloader.ResourceKey

org.pentaho.di.trans.steps.pentahoreporting.ReportExportTaskTest.initializationError (click to expand)
org/pentaho/reporting/engine/classic/core/modules/gui/common/StatusListener

org.pentaho.di.www.ExecuteJobServletTest.testExecuteJobServletTest (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.www.ExecuteJobServletTest.testExecuteJobServletTestCantFindDirectory (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.www.ExecuteJobServletTest.testExecuteJobServletTestJobNotFoundInDirectory (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.www.ExecuteJobServletTest.testExecuteJobServletTestCantFindRepository (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

org.pentaho.di.www.ExecuteJobServletTest.testExecuteJobServletTestWithUnauthorizedUser (click to expand)
javassist.CannotCompileException: by java.util.zip.ZipException: invalid stored block lengths

Tests run: 3716, Failures: 14, Skipped: 7    Test Results

:information_source:  This is an automatic message

:white_check_mark: Build finished in 30m 39s
Build command:
mvn clean verify -B -e -Daudit -amd -pl engine

:ok_hand: All tests passed!
Tests run: 3721, Failures: 0, Skipped: 7    Test Results

:information_source:  This is an automatic message


Fix series selector

Resolves #37

What's with the yaml and md manglement? was that prettier?

@cythrawll ya that was prettier.  It ended up running against some crazy stuff during my merge.  I'll put it back.

Can we have the search input be the same width as the dropdown?


[cassandra] Merge TLP MBean configuration

What does this PR do?
Merge TLP config file in our example conf.yaml
Motivation
Need the metrics to improve our default dashboard
Versioning

[x] Bumped the version check in manifest.json
[x] Updated CHANGELOG.md

Additional notes
The main difference between cassandra 2 and 3 is the renaming of Column Family into Table.
In cassandra 2, there is no MBean type Table, the MBeans are available under the type ColumnFamily.
I put by default the naming for cassandra 3, with the naming for cassandra 2 commented out

@zippolyte @masci next steps on this and the dashboards?

@zippolyte is this change backward compatible? What happens if I'm running cassandra 2 and upgrade the check?

If you were running the check before an upgrade, then you already have a cassandra.yaml and the upgrade won't overwrite that so nothing would change for you in that case. Otherwise, you'd have to edit the config to uncomment the cassandra 2 part. Either way, the check won't break if, in the yaml file, you list an MBean that does not exist.


After connecting for a period of time, the display will become unclear

[√] I have read the FAQ.
[√] I have searched in existing issues.

Environment

OS: Windows
scrcpy version: 2.3.1
installation method: Windows release
device model:
Android version: 13

Describe the bug
After connecting for a period of time, the display will become unclear

The text here clearly becomes very blurry

D:\工具\Scrcpy>scrcpy.exe -d --always-on-top -S
scrcpy 2.3.1 <https://github.com/Genymobile/scrcpy>
INFO: ADB device found:
INFO:     -->   (usb)      NJG6WKI7VOTK8DVC            device  RMX3560
INFO:         (tcpip)       <IP_ADDRESS>:16384            device  PFTM10
INFO:         (tcpip)       <IP_ADDRESS>:16416            device  SDY_AN00
INFO:         (tcpip)       <IP_ADDRESS>:16448            device  PGAM10
INFO:         (tcpip)       <IP_ADDRESS>:16480            device  PGAM10
INFO:         (tcpip)       <IP_ADDRESS>:16512            device  2201116SC
INFO:         (tcpip)    <IP_ADDRESS>:5555            device  RMX3560
D:\工具\Scrcpy\scrcpy-server: 1 file pushed, 0 skipped. 68.0 MB/s (66007 bytes in 0.001s)
[server] INFO: Device: [realme] realme RMX3560 (Android 13)
INFO: Renderer: direct3d
INFO: Texture: 1080x2408
[server] INFO: Device screen turned off

Try with another encoder: https://github.com/Genymobile/scrcpy/blob/master/doc/video.md#encoder


if an algorithm is in a terminating state it should be ignored

HKube micro-service
task-executor
Describe the bug
when an algorithm is in a terminating state and a pipeline with the same algorithm is trrigerd
the trigger server should ignore those pods and start a new one

Need to reproduce to get the exact condition in kubernetes


Incorporate API reference generation into build/deploy workflow

Summary
The API documentation needs to be auto-generated either when building or when pushing to the repo. The current files are generated using a modified version of xmldoc2md (to support .NET 8 and fix some compatibility issues).
Status
Not started at all
What needs to be done

[ ] Incorporate the md file generation into the build process
[ ] Copy files into appropriate docs directory
[ ] Adjust mkdocs.yml nav based on the output

Implemented with migration to docfx


[Feature] Change bundle name only

This is a very useful library.
Sometimes I just want to change android bundle name without changing project name.
How can I do it?

You can find every thing related to name changing from below link.
https://www.youtube.com/watch?v=xqUqi3lqLHw

Fixed in the last release v2.7.0

Fixed in the last release v2.7.0


make $.getSelectedOption() lazy loaded

fix for #1581 (still in progress)

superseded by https://github.com/selenide/selenide/pull/1864


Sdk automation/azure mgmt imagebuilder

@changlong-liu please hold. let me see if another swagger change is needed.

Another swagger update has been made. Please don't forget to update SDK. Thanks.


French accent in title doesn't show up on image pages

see https://ccsearch-dev.creativecommons.org/photos/9ee73b56-ca58-4069-99ea-c9f90889dade
https://ccsearch-dev.creativecommons.org/photos/36880021-df93-4654-8954-4a053427ed96

this is still a bug, fyi: https://ccsearch.creativecommons.org/photos/08a3475d-eb78-4fc6-ac46-33d3ac63d608


Add typescript const declaration for collapsedHeight and expandHeight to prevent renaming

Add typescript const declaration for collapsedHeight and expandHeight to prevent renaming by overzealous closure compiler renaming.

Closing per comment in linked PR


(New feature) Manually trigger check for changes

Firstly, great work on this project. It is working fantastically for me.
I imagine it is a fairly common usage case to upload with Rclone and then update Plex to add in the new content. However apart from setting a very low refresh interval which seems wasteful(I'm currently using 10s) you must wait until plexdrive notices the change and then send the command to Plex to tell it to update.
I think it would be good if it was possible to send a command to plexdrive telling it to check for changes, this would help my script and improve the process of uploading and adding content to my plex server. I've stopped using a union-fs temporary local cache of the files because they have a different mod-time and plex sees them as different files.

Why don't you set the Plex library scan interval to 15 min. Working great for me.
My setup uses the plexdrive defaults, plex to 15 min refresh rate and upload with rclone. A change will be detected by plex within 20 minutes.

Good suggestion, having avoided that option for months trying to avoid bans it is nice to remember that I can use it again. But this is not my preferred way of doing things.
Firstly, if I have just added whatever content to Sonarr/Radarr chances are I am wanting to watch it ASAP and don't like the idea of having to wait 1-20 mins hitting refresh for it to show up. Currently it usually takes me no more then 8 minutes between adding something to Sonarr/Radarr and it showing up in Plex, I don't want to increase that time unnecessarily.
Secondly, maybe this is me being OCD but I like my setup to be proactive and event driven, not reactionary in general. My script adds the content to Plex and then checks the Plex database to make sure it has has been added correctly and then sends me a notification of the success/failure.
So if this is something you would be happy to add I would use it and probably turn the refresh-interval off or to 24 hours. But if not I understand as maybe you don't see much value in it.
Is there any negatives to setting a refresh-interval of 10 seconds?

What is the refresh interval at now? In my set up I only upload once 100gb of local storage is used so I just need to know how long it takes for plexdrive to find these files so I can add a delay to my script. I shut my server down in the process so it's not a big deal how long the interval is set at.

The default is listed in the readme as 5 minutes.
-refresh-interval duration
The number of minutes to wait till checking for changes (default 5m0s)
This description should probably be updated because it is not actually the number of minutes, inputting just a number will not work. you need to input the 'unit' as well (h,m,s)

I'm running mine at 30s and seems to be working fine.

You can set the interval to 1 second if you want. It will just queue your refresh requests. So if one refresh is still active, the next request will wait for the first one to finish.
Please have a good look on your quota, I am not quite sure how many requests are fine for you... Scanning every second means 1 * 60 * 60 * 24 = 86400 API calls a day just for refreshing your content. You have to add the API calls starting a movie etc. ;)
I am not quite sure if I got you right @mattmac24... you want to start the refresh manually with an external trigger or do you want the program to execute your script after it has detected changes?
The second way looks more idiomatic to me.

Ideally I want to be able to start the refresh manually with an external trigger

Well, I don't think that you will profit with an external trigger. You achieve the same results just setting the refresh interval for example to 30s (or lower).
You will only reduce the API call count with an external hook.

Fair enough, there doesn't seem to be any harm in using a much lower refresh interval, just a lot of unnecessary API calls in my case.

Hi guys, just had the problem in plex of showing the file twice, I suppose it scanned it before when it was appearing in rclone then from plexdrive after the refresh.
@zenjabba do you mind putting your options you are using to mount rclone and plexdrive, I am currently using same configuration as you as in plexdrive=RO:rclone=RW.
Cheers for the good work @dweidenfeld, just changed from node-gdrive-fuse, because only got it to work without refresh, to plexdrive, and everything is working as well as before for now, and much simplified configuration :)

The latest beta of rclone can replace plexdrive completely, and it also includes uploading via CoW.
Make sure you are using the latest rclone and then remove plexdrive.

On 26 Feb 2018, at 6:42 am, Adam Guldemann<EMAIL_ADDRESS>wrote:
Hi guys, just had the problem in plex of showing the file twice, I suppose it scanned it before when it was appearing in rclone then from plexdrive after the refresh.
@zenjabba https://github.com/zenjabba do you mind putting your options you are using to mount rclone and plexdrive, I am currently using same configuration as you as in plexdrive=RO:rclone=RW.
Cheers for the good work @dweidenfeld https://github.com/dweidenfeld, just changed from node-gdrive-fuse, because only got it to work without refresh, to plexdrive, and everything is working as well as before for now, and much simplified configuration :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/dweidenfeld/plexdrive/issues/18#issuecomment-368474296, or mute the thread https://github.com/notifications/unsubscribe-auth/AApfuCwtXVDPt01ch1Wbedluo3dfMGFsks5tYpiigaJpZM4NTFDB.

I disagree with this. Rclone cache causes me API bans.

I want to wait a bit more to switch to rclone cache, I have seen some people still getting some bans and when I tried it the time to actually start streaming on plex was faster with plexdrive, I prefer to keep plexdrive until the quirks are resolved on rclone cache :)
Right now I am having issues with the mount plexdrive=RO:rclone=RW, I am getting permission denied on trying to delete a file from the unionfs mount. Any ideas? Again would be nice to see your options passed to the command.
Cheers for the help

@dweidenfeld made a great program in plexdrive and I still find it much better than rclone cache myself.
This is the script I use which I forked from madlundt version which uses unionfs. I converted it to use mergerfs.
Fork:
https://github.com/Dulanic/cloud-media-scripts
Original:
https://github.com/madslundt/cloud-media-scripts

Thank @Dulanic just tried mergerfs and it works same as unionfs and also delete succesfully: here is my command for those interested:
mergerfs -o defaults,nonempty,allow_other,direct_io,use_ino,category.create=ff,category.search=ff,minfreespace=0,uid=1000,gid=100 /mnt/gdrive-plexdrive=RO:/mnt/gdrive-rclone /mnt/media


python inference.py IndexError: too many indices for array

When I run the inference.py,  the error occurs. Please help. Thanks very much.
python inference.py --img_list example/file_list.txt --img_prefix example/Images --save_dir results

/Rotate-and-Render/3ddfa$ python inference.py --img_list example/file_list.txt --img_prefix example/Images --save_dir results
0%|                                                     | 0/8 [00:04<?, ?it/s]
Traceback (most recent call last):
File "inference.py", line 168, in
main(args)
File "inference.py", line 84, in main
pts_2d_5 = get_5lmk_from_68lmk(pts_2d_68)
File "/home/zq/workspace/Rotate-and-Render/3ddfa/utils/inference.py", line 14, in get_5lmk_from_68lmk
left_eye = lmk68[36:42, :].mean(axis=0)
IndexError: too many indices for array

I have met the same question.
My solution is to change:
https://github.com/Hangz-nju-cuhk/Rotate-and-Render/blob/956b3a42b3e87c1234b922484f866c21ec5cc252/3ddfa/inference.py#L83
pts_2d_68 = preds[0][0]
into
pts_2d_68 = preds[0]
It works for me.

I have met the same question.
My solution is to change:
https://github.com/Hangz-nju-cuhk/Rotate-and-Render/blob/956b3a42b3e87c1234b922484f866c21ec5cc252/3ddfa/inference.py#L83
pts_2d_68 = preds[0][0]
into
pts_2d_68 = preds[0]
It works for me.

Thanks for your help! It also works for me.

我遇到了同样的问题。我的解决方案是改变：
https://github.com/Hangz-nju-cuhk/Rotate-and-Render/blob/956b3a42b3e87c1234b922484f866c21ec5cc252/3ddfa/inference.py#L83
pts_2d_68 = 捕食者[0][0]
到
pts_2d_68 = 捕食者[0]
它对我有用。

感谢您的帮助！！！！！


Graphana configuration review

Review Graphana configuration

The way we use Graphana ie. pulling from latest docker dosen't leak any secrets because the directory traversal is confined to the docker container context.


--generate-mono-glue ERROR (Windows 7, VS 2017)

Operating system or device, Godot version, GPU Model and driver (if graphics related):
Windows 7

python --version
Python 2.7.8

scons --version
SCons by Steven Knight et al.:
script: v3.0.0.rel_3.0.0:4395:8972f6a2f699, 2017/09/18 12:59:24, by bdbaddog on ubuntu-16
engine: v3.0.0.rel_3.0.0:4395:8972f6a2f699, 2017/09/18 12:59:24, by bdbaddog on ubuntu-16
engine path: ['C:\Python27\Lib\site-packages\scons-3.0.0\SCons']
Copyright (c) 2001 - 2017 The SCons Foundation

mono --version
Mono JIT compiler version 5.4.0 (Visual Studio built mono)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-proj
ect.com
TLS:           normal
SIGSEGV:       normal
Notification:  Thread + polling
Architecture:  amd64
Disabled:      none
Misc:          softdebug
LLVM:          supported, not enabled.
GC:            sgen

Issue description:

http://docs.godotengine.org/en/latest/development/compiling/compiling_with_mono.html
Following the above document, running "godot --generate-mono-glue modules/mono/glue" results in the below errors:
ERROR: No loader found for resource: res://modules/mono/glue
At: core\io\resource_loader.cpp:184
ERROR: Failed loading scene: res://modules/mono/glue
At: main\main.cpp:1546
Steps to reproduce:
Using the x64 Native Tools Command Prompt for VS 2017, run the following commands:

scons -j6 platform=windows tools=yes module_mono_enabled=yes mono_glue=no
.\bin\godot.windows.tools.64.exe --generate-mono-glue modules/mono/glue

Link to minimal example project:

ERROR: No loader found for resource: res://modules/mono/glue
At: core\io\resource_loader.cpp:184
ERROR: Failed loading scene: res://modules/mono/glue
At: main\main.cpp:1546

Those are false positives, it's just Godot trying to parse the path as if it were the path to a scene that should be run. Does the glue get generated as expected?

The glue cpp is generated. I thought it failed to build because when I attach the below script, I get an error saying "'GD' does not contain a definition for 'Print'"
using Godot;
using System;
public class MyNode : Node
{
// Member variables here, example:
// private int a = 2;
// private string b = "textvar";
public override void _Ready()
{
    // Called every time the node is added to the scene.
    // Initialization here
    GD.Print("Hello C#");
}

}

Did you build with mono_glue=yes after generating the glue?

The P in theGD.Print() method should be using lowercase p
https://github.com/godotengine/godot/blob/b0194a33f65970948ef66819913bf3034a3a22e8/modules/mono/glue/cs_files/GD.cs#L62

Ah, I forgot print was one of the few methods that are still not in PascalCase.

Would that be easy to fix before alpha2, or is it more involved than just changing the case in GD.cs?

It's trivial to change, but I would prefer to rename all the remaining methods to PascalCase once I update all the manual bindings.

I'm in the same situation, except it doens't look like the .cpp file is getting generated (it's not showing up in modules/mono/glue).

The issue initially reported here is fixed. Could you open a new issue with details about the terminal log, how you built Godot and how you're generating the glue?


Add files via upload

add university

add University name "Universidad de Ixtlahuaca CUI"

@osdasanchez First stage of verification passed, official domain for Universidad de Ixtlahuaca CUI is uicui.edu.mx as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@osdasanchez Thank you for your patience while waiting for a review and processing your request. Pull request merged.


Experience/10911/manage connection

This PR ...
ReportStream Managing your connection Page
Test Steps:

Log into RS
navigate to /manage-connection

Changes

Checklist
Testing

[x] Tested locally?
[ ] Ran ./prime test or ./gradlew testSmoke against local Docker ReportStream container?
[ ] (For Changes to /frontend-react/...) Ran npm run lint:write?
[ ] Added tests?

Linked Issues

Fixes #10911

@penny-lischer thank you penny!

[ ] remove indentation on the "for healthcare orgs" and "for public health agencies" body section
[ ] can you confirm that the quick links at the top will be added later on?

Also was going to ask about the quick links. How much later on do you mean? Also, a few links need the lock icon on them but I don't know if that was going to be added when the links were added.

[ ] Contact us under the submission history api needs the external link icon.
[ ] The service request link at the bottom isn't working for me


Compilation stalls when building Envoy in a container

Title: Build progress stalls in the envoyproxy/envoy-build-ubuntu container.
Description:
I checked out the latest master and followed the instructions in ci directory - ./ci/run_envoy_docker.sh './ci/do_ci.sh bazel.dev - to build envoy from source inside the ubuntu container. My host OS is a macOS 10.14.5 with docker desktop installed.
After triggering the above command the container is successfully launched but the compilation stalled at:
[2,182 / 2,334] 151 actions, 2 running
    Compiling source/extensions/filters/http/jwt_authn/extractor.cc; 22s local
    Compiling source/common/router/header_formatter.cc; 17s local
    [Analy] Compiling external/io_opencensus_cpp/opencensus/exporters/trace/stackdriver/internal/stackdriver_exporter.cc; 1828s
    [Analy] Compiling source/common/http/context_impl.cc; 1778s
    [Analy] Compiling source/extensions/tracers/common/ot/opentracing_driver_impl.cc; 1778s
    [Analy] Compiling source/common/router/header_parser.cc; 1778s
    [Analy] Compiling source/extensions/filters/http/buffer/buffer_filter.cc; 1778s
    [Analy] Compiling source/extensions/filters/http/lua/wrappers.cc; 1778s ...

If I send Ctrl-C on the terminal, it seems Bazel complained as:
^C
Session terminated, terminating shell...
Bazel caught interrupt signal; shutting down.

Could not interrupt server (Deadline Exceeded)

And if I use docker stop [envoy-build-container-id], it doesn't work as well.

I suspect your docker VM doesn't have enough memory, causing compilation to grind to a halt. Maybe try increasing the resources given to the VM?

Yes, you are right. After I increased the memory from 2GB to 8GB, the problem was gone. Thanks for the help!


Not a issue; "local:</path/to/directory>"

Is it possible to include the "local:</path/to/directory>" and it's subfolders? If so, how is that possible?
it would be nice to be able to organize the files in different folders (by year, for example)

Can you try the recurse-local-directories branch?

I'd love this feature as well. I tried the branch you created but MagicMirror won't start with it enabled. I suppose it's too far behind master by now. If someone could take a look at this, I'd be willing to test.

Give the branch another try now, I just pushed a fix

Awesome, thanks for the quick update! I gave it a try and it seems to work pretty much as expected.
However, I noticed duplicate pictures to keep appearing. I have my pictures (some 2000 or so) mounted to my Raspi via webdav, the updateInterval is 86400000 and the maximumEntries is set to 1000. If I understood correctly, this should mean that I could only be seeing the same picture twice after a day at the soonest or am I missing something here?
Possibly it has to do with me only restarting the browser and not MagicMirror itself after changing settings?
Side note: it might be a good idea to make the directory recursion an option in the config. Thanks again for your work!

With maximumEntries set to 1000, it will take ~16:40 to cycle through all of the images, so you will see duplicates within a day in the morning and the evening.  If you're noticing them more often than that, it would be a bug, but I'm not sure why it would be happening, the code to cycle through the images once they're chosen is pretty simple.

I've also merged the changes into the master branch, and recursing is controlled by the recurseLocalDirectories config item (default false).  I just didn't feel like it was necessary to add the config flag in the feature branch since it was specifically for testing that functionality.

Awesome, thanks! Completely agree, a dedicated config isn't needed in a testing branch.
I suppose the duplicate pictures are due to me restarting the browser which probably resets the queue.

Yeah, that's probably it.  node_helper caches its response so if you restart the browser, it's likely starting over again from the beginning of whatever shuffled list that was there.  I could probably add a cached timestamp to the response, so if you restart the browser, it could pick up in the cached list where it left off before, instead of starting over.  I'll add that to my list of ideas to implement when I find time