2/n Nested Text textAlignVertical (Android) - adding textAlignVertical prop to NestedText

Summary
Requires merging 1/n Nested Text textAlignVertical (Android) - Adding CustomStyleSpan API to align nested text vertically PR https://github.com/facebook/react-native/pull/35949.
2/n of a series of pull requests (Nested Text textAlignVertical):

adds textAlignVertical prop to nested text (JavaScript, CPP, Java)
adds logic in ReactTextViewManager#updateExtraData to update CustomStyleSpan maxLineHeight and maxFontSize. maxLineHeight and maxFontSize are used to align vertically nested text
updates the span maxLineHeight and maxFontSize to align the nested text
MetricAffectingSpan method updateDrawState changes the TextPaint baseline and aligns the text top or bottom

CSS - vertical-align with spans
The CSS vertical-align property vertically aligns text on a character level
Code example CSS vertical-align

https://github.com/facebook/react-native/issues/30375#issuecomment-1369842920
https://jsfiddle.net/2duoLyq4/14/

Lorem ipsumsup

Lorem ipsumtop

Android - explanation of the corresponding Span Android APIs
MetricAffectingSpan allows to vertically align text (group of characters, not paragraphs divided by \n) by changing the TextPaint baseline of a span.

Metric Affecting spans. Spans can also affect text metrics, such as line height and size. All of these spans extend the MetricAffectingSpan class.

Text is represented as TextView on Android, Nested Text is represented as Spans.
https://developer.android.com/develop/ui/views/text-and-emoji/spans
https://developer.android.com/develop/ui/views/text-and-emoji/spans#span-types

How the span affects text: a span can affect either text appearance or text metrics.
Span scope: some spans can be applied to individual characters, while others must be applied to an entire paragraph

They consist of four types:

Paragraph Affecting spans (text separated by \n (new line)). A span can also affect text at a paragraph level, such as changing the alignment or the margin of the entire block of text. Spans that affect entire paragraphs implement ParagraphStyle.
Character Affecting spans. A span can affect text at a character level. For example, you can update character elements like background color, style, or size. Spans that affect individual characters extend the CharacterStyle class.
Appearance Affecting spans
Metric Affecting spans. Spans can also affect text metrics, such as line height and text size. All of these spans extend the MetricAffectingSpan class.

Android does not support CSS vertical-align on character-level
An example of similar functionality on Android is the AlignmentSpan.
A paragraph is a text separated by \n (new line). The AlignmentSpan changes the horizontal alignment of the paragraph.
https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/text/Layout.java;l=494-500;drc=caabd536e8fea82b888902f359b33e637267966c;bpv=1;bpt=1?q=ALIGN_OPPOSITE&ss=android%2Fplatform%2Fsuperproject

New batch of paragraph styles, collect into spans array. Compute the alignment, last alignment style wins. Reset tabStops, we'll rebuild if we encounter a line with tabs. We expect paragraph spans to be relatively infrequent, use spanEnd so that we can check less frequently.  Since paragraph styles ought to apply to entire paragraphs, we can just collect the ones present at the start of the paragraph. If spanEnd is before the end of the paragraph, that's not our problem.

Details on how the Layout.java API draws text with the AlignmentSpan.
https://github.com/facebook/react-native/issues/30375#issuecomment-782213872.

Saves the paragraph alignment (writeToParcelInternal) as ALIGN_CENTER, ALIGN_OPPOSITE or ALIGN_NORMAL.
Text and spans are drawn with Layout #drawText. The method iterates over each Nested Text and adds styles like background color, font size, and other nested Text attributes.
drawText iterates over each AlignmentSpan and applies their custom horizontal alignment (source)
The TextLine API is used to measure, recycle, and draw the text.

fixes https://github.com/facebook/react-native/issues/30375 https://github.com/facebook/react-native/issues/30375#issuecomment-1369842920
Changelog
[ANDROID] [ADDED] - 2/n Nested Text textAlignVertical (Android) - adding textAlignVertical prop to NestedText
Test Plan
https://github.com/facebook/react-native/pull/35704#issuecomment-1384447219
https://github.com/facebook/react-native/pull/35704#issuecomment-1384509006
https://github.com/facebook/react-native/pull/35704#issuecomment-1384545395
Previous Tests

https://github.com/facebook/react-native/pull/35704#issuecomment-1382247565
https://github.com/facebook/react-native/pull/35704#issuecomment-1366556154 https://github.com/facebook/react-native/pull/35704#issuecomment-1372783339

P
type
task

1
test
Verify issue still reproduce on the main branch

2
feature
Use SuperScriptSpan to vertically position the Nested Text (link)

3
feature
Copy fabric cpp changes from PR Adding Android support for Accessibility TtsSpan API with accessibilityRole and accessibilityUnit props #35130Task 1) Add verticalAlign to TextAttributesPropsTask 2) Add Span to TextLayoutManagerMapBufferTask 3) Copy all the changes from PR #35130

4
feature
Replace superscript and subscript with top and bottom (stackoverflow-1, stackoverflow-2)

P	type	task
1	test	Verify issue still reproduce on the main branch
2	feature	Use SuperScriptSpan to vertically position the Nested Text (link)
3	feature	"Copy fabric cpp changes from PR Adding Android support for Accessibility TtsSpan API with accessibilityRole and accessibilityUnit props #35130
Task 1) Add verticalAlign to TextAttributesProps
Task 2) Add Span to TextLayoutManagerMapBuffer
Task 3) Copy all the changes from PR #35130"
4	feature	Replace superscript and subscript with top and bottom (stackoverflow-1, stackoverflow-2)

P
type
task

3
feature
Copy fabric cpp changes from PR Adding Android support for Accessibility TtsSpan API with accessibilityRole and accessibilityUnit props #35130Task 1) Add verticalAlign to TextAttributesPropsTask 2) Add Span to TextLayoutManagerMapBufferTask 3) Copy all the changes from PR #35130

3.1
task
RNTester crashes at startup caused by wrong configurations. Logcat points to newarchdefaults. Solution: gradle clear after making cpp changes.

3.2
task
Log the value of textVerticalAlign for a nested text in TextAttributes.java to verify the value is passed from JS.

3.3
task
Fix wrong mapping textVerticalAlign to textAlignVertical

P	type	task
3	feature	"Copy fabric cpp changes from PR Adding Android support for Accessibility TtsSpan API with accessibilityRole and accessibilityUnit props #35130
Task 1) Add verticalAlign to TextAttributesProps
Task 2) Add Span to TextLayoutManagerMapBuffer
Task 3) Copy all the changes from PR #35130"
3.1	task	RNTester crashes at startup caused by wrong configurations. Logcat points to newarchdefaults. Solution: gradle clear after making cpp changes.
3.2	task	Log the value of textVerticalAlign for a nested text in TextAttributes.java to verify the value is passed from JS.
3.3	task	Fix wrong mapping textVerticalAlign to textAlignVertical

Verify configs behind mIsAccessibilityLink or check corresponding configs in TtsSpan, because the value mVerticalAlign is set in TextAttributesProps.java, but not in MapBuffer.

P
type
task

1
Bug
Verify configs behind mIsAccessibilityLink or check corresponding configs in TtsSpan, because the value mVerticalAlign is set in TextAttributesProps.java, but not in MapBuffer.

P	type	task
1	Bug	Verify configs behind mIsAccessibilityLink or check corresponding configs in TtsSpan, because the value mVerticalAlign is set in TextAttributesProps.java, but not in MapBuffer.

P
type
task

1
Bug
Verify configs behind mIsAccessibilityLink or check corresponding configs in TtsSpan, because the value mVerticalAlign is set in TextAttributesProps.java, but not in MapBuffer.

2
feature
Modify Superscript implementation to align to the top (stackoverflow-1, stackoverflow-2)

P	type	task
1	Bug	Verify configs behind mIsAccessibilityLink or check corresponding configs in TtsSpan, because the value mVerticalAlign is set in TextAttributesProps.java, but not in MapBuffer.
2	feature	Modify Superscript implementation to align to the top (stackoverflow-1, stackoverflow-2)

P
type
task

1
bug
Nested Text does not take height of parent and is not aligned as the parent

1.1
task
Create flexbox example with Nested Text

1.2
task
Retrieve element height with Text onLayout callback

1.3
task
Set hardcorded height value in ReactTopAlignSpan constructor

1.4
task
Use hardcorded height to position nested Text top/center/bottom

1.5
task
Read about top, ascent, descent, bottom and leading (stackoverflow)

1.6
task
Shift the baseline top/center/bottom using the hardcoded height (+100, +200 and -200) to position correctly the Text top/center/bottom. Take in consideration parent text alignment.

2
feature
Implement Superscript and publish solution

2.1
task
Implement previous superscript solution and stash the other changes

2.2
task
adjustement using font height to adapt superscript to top

P	type	task
1	bug	Nested Text does not take height of parent and is not aligned as the parent
1.1	task	Create flexbox example with Nested Text
1.2	task	Retrieve element height with Text onLayout callback
1.3	task	Set hardcorded height value in ReactTopAlignSpan constructor
1.4	task	Use hardcorded height to position nested Text top/center/bottom
1.5	task	Read about top, ascent, descent, bottom and leading (stackoverflow)
1.6	task	Shift the baseline top/center/bottom using the hardcoded height (+100, +200 and -200) to position correctly the Text top/center/bottom. Take in consideration parent text alignment.
2	feature	Implement Superscript and publish solution
2.1	task	Implement previous superscript solution and stash the other changes
2.2	task	adjustement using font height to adapt superscript to top

Android - Basic implementation of Top and Bottom in nested text

does not support for height or lineHeight

P
type
task

1
feature
Update TopAlignSpan baseline position from ReactTextView#onDraw with the updated TextView height

1.1
task
Retrieve in ReactTextView onDraw the text spans of class ReactTopAlignSpan with getSpans

1.2
task
Loop over the spans and trigger method span.updateBaseline(height)

1.3
task
Trigger updateBaseline and log the value of height from ReactTopAlignSpan

1.4
task
Verify that the value is 550 or similar and correctly update the Span baseline

1.5
task
ReactTopAlignSpan method updateBaselines updates the baseline based on the height received from ReactTextView getHeight

1.6
task
Review (stackoverflow-1, stackoverflow-2)

1.7
task
Try to draw the text manually with TextView onDraw to the correct position (slides)

P	type	task
1	feature	Update TopAlignSpan baseline position from ReactTextView#onDraw with the updated TextView height
1.1	task	Retrieve in ReactTextView onDraw the text spans of class ReactTopAlignSpan with getSpans
1.2	task	Loop over the spans and trigger method span.updateBaseline(height)
1.3	task	Trigger updateBaseline and log the value of height from ReactTopAlignSpan
1.4	task	Verify that the value is 550 or similar and correctly update the Span baseline
1.5	task	ReactTopAlignSpan method updateBaselines updates the baseline based on the height received from ReactTextView getHeight
1.6	task	Review (stackoverflow-1, stackoverflow-2)
1.7	task	Try to draw the text manually with TextView onDraw to the correct position (slides)

Nested Text correctly aligns to the top of the View

<View style={{height: 250}}>
  <Text
    style={{
      flex: 1,
      textAlignVertical: 'bottom',
      backgroundColor: 'yellow',
    }}>
    A parent text with{' '}
    <Text
      style={{
        textAlignVertical: 'bottom-child',
        backgroundColor: 'red',
      }}>
      Bottom
    </Text>
    <Text
      style={{
        textAlignVertical: 'top-child',
        backgroundColor: 'green',
      }}>
      Top
    </Text>
  </Text>
  <Text
    style={{
      verticalAlign: 'bottom',
      backgroundColor: 'red',
    }}>
    Bottom
  </Text>
</View>

P
type
task

2
bug
Add logic to detect parent textAlignVertical and correctly shift baseline

2.1
task
Test scenario with hardcoded values

2.2
task
Add gravity to ReactTopAlignSpan constructor (the value retrieved with TextView#getGravity).

2.3
task
Add parameter textAlignVertical to ReactTopAlignSpan constructor.

2.4
task
Invalidate the ReactTopAlignSpan to trigger updateDrawState

2.5
task
Change baseline based on the textAlignVertical, mParentGravity and mHeight.

2.6
task
Rename ReactTopAlignSpan to ReactAlignSpan

P
type
task

1
bug
Avoid adding ReactAlignSpan to span of the parent TextView

1.1
task
The span is added to each fragment with the field mVerticalAlign. Avoid adding mVerticalAlign to fragments that are not virtual (check isVirtual as done in accessibilityLinks).

1.2
task
Convert “top”, “bottom”, “center” to “top-child”, “bottom-child”, “center-child” (code) and use different value for virtual raw text.

P	type	task
1	bug	Avoid adding ReactAlignSpan to span of the parent TextView
1.1	task	The span is added to each fragment with the field mVerticalAlign. Avoid adding mVerticalAlign to fragments that are not virtual (check isVirtual as done in accessibilityLinks).
1.2	task	Convert “top”, “bottom”, “center” to “top-child”, “bottom-child”, “center-child” (code) and use different value for virtual raw text.

AlignSpan is positioned to the bottom when text size changes

https://user-images.githubusercontent.com/24992535/210273277-af2c5a85-4b21-4c07-93a4-412a3ea16443.mp4

AlignSpan is positioned to the bottom when span position changes

Nested Text Aligned correctly when spans are positioned in different position of multiline text

P
type
task

1
feature
Text correctly aligns with nested inline image. The height of the inline image changes the Text lineHeight

1.1
task
Change image height and verify that the algorithm covers all scenarios (hardcode height in Span for testing)

1.2
task
Retrieve correct line height after inline image is added to Text or trigger an update add the correct height to ReactAlignSpan. Try to call updateSpan after image is appended to Text.

1.3
task
Change the values in CustomLineHeightSpan and verify change in Image height (for ex. Set mLineHeight to 50)

1.4
task
Read logic that adds TextInlineImageSpan in TextView

1.5
task
Retrieve height of the image from updateExtraData

1.6
task
Read about FrescoInlineImage and understand react-native implementation

1.7
task
Verify that updateExtraData triggers a TextInlineImage update

1.8
task
Find logic that adds InlineImage to TextView

1.9
task
Use previously detected height to change Text baseline. Use hardcoded value.

2.0
task
Pass image height to ReactAlignSpan

2.1
task
Change height and verify image height changes

2.2
task
The maximumHeight of the TextView may not be maxHeight of the Span (ReactTextView#onLayout). Retrieve the span lineHeight after the image is added.

2.3
task
Read implementation of TextInlineViewPlaceholderSpan in react-native

2.4
task
Find react-native logic that change the span height after an image is added. TextLayoutManager #measureText and ReactTextView #onLayout includes logic that iterates over image spans.

P	type	task
1	feature	Text correctly aligns with nested inline image. The height of the inline image changes the Text lineHeight
1.1	task	Change image height and verify that the algorithm covers all scenarios (hardcode height in Span for testing)
1.2	task	Retrieve correct line height after inline image is added to Text or trigger an update add the correct height to ReactAlignSpan. Try to call updateSpan after image is appended to Text.
1.3	task	Change the values in CustomLineHeightSpan and verify change in Image height (for ex. Set mLineHeight to 50)
1.4	task	Read logic that adds TextInlineImageSpan in TextView
1.5	task	Retrieve height of the image from updateExtraData
1.6	task	Read about FrescoInlineImage and understand react-native implementation
1.7	task	Verify that updateExtraData triggers a TextInlineImage update
1.8	task	Find logic that adds InlineImage to TextView
1.9	task	Use previously detected height to change Text baseline. Use hardcoded value.
2.0	task	Pass image height to ReactAlignSpan
2.1	task	Change height and verify image height changes
2.2	task	The maximumHeight of the TextView may not be maxHeight of the Span (ReactTextView#onLayout). Retrieve the span lineHeight after the image is added.
2.3	task	Read implementation of TextInlineViewPlaceholderSpan in react-native
2.4	task	Find react-native logic that change the span height after an image is added. TextLayoutManager #measureText and ReactTextView #onLayout includes logic that iterates over image spans.

P
type
task

1
bug
The TextView lineHeight is set to the highest value. A span lineHeight may change other spans lineHeight. The textAlignment align correctly if lineHeight was set from another span. TextAlignVertical does not align correctly when lineHeight is undefined.

1.1
task
Use TextView height and number of lines to calculate lineHeight. Use lineHeight to shift text baseline when there are no InlineImages.

1.2
task
Use mOtherSpanLineHeight to adjust height when Inline image present. Troubleshoot regression caused by mOtherSpanLineHeight in combination with lineHeight prop.

1.3
task
Test scenario where lineHeight prop is over-ridded by InlineImage height (screenshot). If the line does not have explicit lineHeight props, an inline image will change the lineHeight of that specific line.

2
bug
Calculating the lineHeight as average between height and numberOfLines in the text may cause issue when one of the lines includes an InlineImage. The InlineImage changes the lineHeight of that line, but the other lines keep their default height. The average lineHeight changes for the other lines and it is not anymore an accurate estimate. The text is not correctly vertically aligned (Screenshot).

2.1
task
Verify that CustomLineHeightSpan is responsible for changing the line height. Remove the Span and observe lineHeight change in the UI.

2.2
task
Loop in ReactTextView onLayout over each CustomLineHeightSpan, retrieve getHeight and pass it to AlignSpan #updateSpan

2.3
task
Log the height of the AlignSpan with text Center in #updateDrawState

2.4
task
Retrieve the lineHeight of the Span with text Center using CustomLineHeightSpan getHeight

2.5
task
Use the height to position the text in top vertical position

P	type	task
1	bug	"The TextView lineHeight is set to the highest value. A span lineHeight may change other spans lineHeight. The textAlignment align correctly if lineHeight was set from another span.
TextAlignVertical does not align correctly when lineHeight is undefined."
1.1	task	Use TextView height and number of lines to calculate lineHeight. Use lineHeight to shift text baseline when there are no InlineImages.
1.2	task	Use mOtherSpanLineHeight to adjust height when Inline image present. Troubleshoot regression caused by mOtherSpanLineHeight in combination with lineHeight prop.
1.3	task	Test scenario where lineHeight prop is over-ridded by InlineImage height (screenshot). If the line does not have explicit lineHeight props, an inline image will change the lineHeight of that specific line.
2	bug	Calculating the lineHeight as average between height and numberOfLines in the text may cause issue when one of the lines includes an InlineImage. The InlineImage changes the lineHeight of that line, but the other lines keep their default height. The average lineHeight changes for the other lines and it is not anymore an accurate estimate. The text is not correctly vertically aligned (Screenshot).
2.1	task	Verify that CustomLineHeightSpan is responsible for changing the line height. Remove the Span and observe lineHeight change in the UI.
2.2	task	Loop in ReactTextView onLayout over each CustomLineHeightSpan, retrieve getHeight and pass it to AlignSpan #updateSpan
2.3	task	Log the height of the AlignSpan with text Center in #updateDrawState
2.4	task	Retrieve the lineHeight of the Span with text Center using CustomLineHeightSpan getHeight
2.5	task	Use the height to position the text in top vertical position

P
type
task

3
test
Parent component does not have align property

4
bug
Parent Text with textAlignVertical top

5
bug
Bottom and center alignment

Nested Texts with the lineHeight prop align text vertically top/bottom/center

ENABLE AUDIO

P
type
task

1
bug
Changing text align from center to top results in mHighestLineHeight 0. Dext does not aligned to top.

1.1
task
Verify if ReactTextView#onLayout retrieves the highestLineHeight

1.2
task
Try to save highestLineHeight as instance variable

1.3
task
Verify that onLayout is called or find alternative method to update span

1.4
task
Move logic to updateExtraData or updateState

P	type	task
1	bug	Changing text align from center to top results in mHighestLineHeight 0. Dext does not aligned to top.
1.1	task	Verify if ReactTextView#onLayout retrieves the highestLineHeight
1.2	task	Try to save highestLineHeight as instance variable
1.3	task	Verify that onLayout is called or find alternative method to update span
1.4	task	Move logic to updateExtraData or updateState

P
type
task

2
bug
Text does not align correctly without lineHeight prop (video, stackoverflow, stackoverflow-2)

2.1
task
Log values of the formula and add it to algorithm in comments

P	type	task
2	bug	Text does not align correctly without lineHeight prop (video, stackoverflow, stackoverflow-2)
2.1	task	Log values of the formula and add it to algorithm in comments

P
type
task

2
review
Review formula values logged with getFontMetrics().topgetFontMetrics outputs correct value (top is higher then ascent)

3
bug
Implement logic that uses TextView height to align text without lineHeight. Reimplement solution from commit and comment (also relevant comment-1, commit-1, comment-2 and commit-2) which uses total height and number of lines to calculate average height. If textAttributes.mFontSize is not null, use the average lineHeight to position the text.

3.1
task
Read stackoverflow discussion and try to understand how to calculate font height of an AbsoluteSizeSpan after changing size.

3.2
task
Move ReactAbsSizeSpan to separate PR and organize task in separate table

4
refactor
Rename ReactTextMapBuffer mVerticalAlign to mTextAlignVertical

5
refactor
rename paint variable in CustomStyleSpan

6
review
Review the diff

P	type	task
2	review	"Review formula values logged with getFontMetrics().top
getFontMetrics outputs correct value (top is higher then ascent)"
3	bug	Implement logic that uses TextView height to align text without lineHeight. Reimplement solution from commit and comment (also relevant comment-1, commit-1, comment-2 and commit-2) which uses total height and number of lines to calculate average height. If textAttributes.mFontSize is not null, use the average lineHeight to position the text.
3.1	task	Read stackoverflow discussion and try to understand how to calculate font height of an AbsoluteSizeSpan after changing size.
3.2	task	Move ReactAbsSizeSpan to separate PR and organize task in separate table
4	refactor	Rename ReactTextMapBuffer mVerticalAlign to mTextAlignVertical
5	refactor	rename paint variable in CustomStyleSpan
6	review	Review the diff

P
type
task

1
bug
Combining lineHeight and fontSize can cause not correct top/bottom alignment, because they are computed from AbsSpan but CustomStyleSpan.

1.1
task
Update AbsSpan with maxLineHeight

1.2
task
Align text with AbsSpan

P
type
task

1
bug
Combining lineHeight and fontSize can cause not correct top/bottom alignment, because they are computed from AbsSpan but CustomStyleSpan.

1.1
task
Update AbsSpan with maxLineHeight

1.2
task
Align text with AbsSpan

P
type
task

3
bug
Initial position is not correct (screenshot). 1 line is added to baseLine at first load.

3.1
task
Verify if the issue is caused by mHighestLineHeight  or TextSize (source-code)

3.2
task
Log the values of mHighestLineHeight and TextSize

3.3
task
Try to hardcode the values and verify if issue persist

3.4
task
Understand if the issue is caused by updating text with setText in ReactTextView#updateExtraData

P	type	task
3	bug	Initial position is not correct (screenshot). 1 line is added to baseLine at first load.
3.1	task	Verify if the issue is caused by mHighestLineHeight  or TextSize (source-code)
3.2	task	Log the values of mHighestLineHeight and TextSize
3.3	task	Try to hardcode the values and verify if issue persist
3.4	task	Understand if the issue is caused by updating text with setText in ReactTextView#updateExtraData

https://user-images.githubusercontent.com/24992535/212396467-23309b77-a128-4a69-8e4f-57124ca78f7e.mp4
https://user-images.githubusercontent.com/24992535/212396483-936e1c3e-ef19-4eca-827f-a3f8db68bf37.mp4

P
type
task

1
bug
Avoid removing ascent or descent when lineHeight is higher then fontMetrics (video, screenshot). The baseline of the smaller font is shifted by font height of the larger font.

1.1
task
Reimplement logic in CustomStyleSpan to align Text that does not have fontSize

1.2
task
Compare ReactAbsoluteSpan size value and Text fontSize prop for that specific text. Log the value with adb logcat. Result: The fontSize value in ReactAbsoluteSpan is correct, but the alignment is not correct. The lineHeight may be not correct value for that fontSize.

1.3
task
Add a check on the span text (mText) and verify that the span without fontSize is correctly aligned.

1.4
task
Disable ReactAbsSizeSpan logic from the constructor in TextLayoutManagerMapBuffer and verify if issue reproduces with CustomStyleSpan (stashed changes)

1.5
task
Save the baseline and fontsize of the bigger font and pass them to updateSpan

1.6
task
Adjust position of smaller text using parent baseline and fontsize

1.7
task
Add a condition to handle smaller and bigger fontSize in AbsoluteSizeSpan.Check that fontSize (size) in AbsoluteSizeSpan is lower than mHighestFontSize.

1.8
task
Refactor text alignment logic and commit

P	type	task
1	bug	Avoid removing ascent or descent when lineHeight is higher then fontMetrics (video, screenshot). The baseline of the smaller font is shifted by font height of the larger font.
1.1	task	Reimplement logic in CustomStyleSpan to align Text that does not have fontSize
1.2	task	Compare ReactAbsoluteSpan size value and Text fontSize prop for that specific text. Log the value with adb logcat. Result: The fontSize value in ReactAbsoluteSpan is correct, but the alignment is not correct. The lineHeight may be not correct value for that fontSize.
1.3	task	Add a check on the span text (mText) and verify that the span without fontSize is correctly aligned.
1.4	task	Disable ReactAbsSizeSpan logic from the constructor in TextLayoutManagerMapBuffer and verify if issue reproduces with CustomStyleSpan (stashed changes)
1.5	task	Save the baseline and fontsize of the bigger font and pass them to updateSpan
1.6	task	Adjust position of smaller text using parent baseline and fontsize
1.7	task	"Add a condition to handle smaller and bigger fontSize in AbsoluteSizeSpan.
Check that fontSize (size) in AbsoluteSizeSpan is lower than mHighestFontSize."
1.8	task	Refactor text alignment logic and commit

https://user-images.githubusercontent.com/24992535/212749584-15b619d0-ecd2-49ad-84c2-80db9d4513c4.mp4

https://user-images.githubusercontent.com/24992535/212749589-b2a7dde1-476b-4c51-957d-7cc0ce2d0f0b.mp4

Fixing issue with ascent and descent when aligning text with lineHeight

closed in favour of https://github.com/facebook/react-native/pull/35949 and subsequent prs

https://github.com/fabriziobertoglio1987/react-native/commit/1230e06934e573ea0e947e8f4262eb4353e78ee6

P
type
task

1
bug
Understand why updateDrawState does not trigger when using MetricAffectingSpan (stackoverflow)

1.1
task
Log absoluteSizeSpan in ReactTextViewManager and verify that they are not removed

1.2
task
Log ReactAlignSpan updateDrawState and verify is called

1.3
task
Review changes in working directory. Functionality works without changes.

1.4
task
Find commit moving logic from ReactTextView#onLayout to updateExtraData (commits). ReactAlignSpans are not retrieved from ReactTextViewManager#updateExtraData, but they may be available onLayout. (branch, commit)

1.5
task
Move the logic back to ReactTextView#onLayout. Result: ReactAlignSpan are not retrieved from onLayout or updateExtraData, while CustomLineHeightSpans are available.

1.6
task
Use SuperScriptSpan instead of MetricAffectingSpan

1.7
task
Review commit that moved logic from AlignSpan to CustomLineHeightSpans. CustomLineHeightSpans are available, while AlignSpan not available.

1.8
task
Verify if TextLayoutManager#buildSpannableFromFragment is called in Fabric. The methods adds several types of Spans, but misses ReactAlignSpan implementation.

1.9
task
Search for logic related to AbsSizeSpans, CustomStyleSpan and CustomLineHeightSpans that is not implemented in ReactAlignSpans and is responsible for adding/removing the spans from the Text

2
review
Review differences between CustomLineHeightSpans, CustomStyleSpan and ReactAlignSpans. CustomLineHeightSpans are retrieved with getSpans, but AlignSpans are not available.

2.1
task
Review implementation on GitHub of spans. Just read the implementation.

2.2
task
Inspect the text with android studio layout inspector and find the ReactAlignSpan in the test

2.3
task
Debug logic that retrieves spans. Verify spans are availabine in the text (link)

3
refactor
Move the logic for shifting text based on the lineheight to CustomStyleSpan (commit). Stash all your changes.

3.1
task
Resize dummy textPaint to caculate ascent/descent/textHeight (does not include logic to position smaller text)

P	type	task
1	bug	Understand why updateDrawState does not trigger when using MetricAffectingSpan (stackoverflow)
1.1	task	Log absoluteSizeSpan in ReactTextViewManager and verify that they are not removed
1.2	task	Log ReactAlignSpan updateDrawState and verify is called
1.3	task	Review changes in working directory. Functionality works without changes.
1.4	task	Find commit moving logic from ReactTextView#onLayout to updateExtraData (commits). ReactAlignSpans are not retrieved from ReactTextViewManager#updateExtraData, but they may be available onLayout. (branch, commit)
1.5	task	"Move the logic back to ReactTextView#onLayout.
Result: ReactAlignSpan are not retrieved from onLayout or updateExtraData, while CustomLineHeightSpans are available."
1.6	task	Use SuperScriptSpan instead of MetricAffectingSpan
1.7	task	Review commit that moved logic from AlignSpan to CustomLineHeightSpans. CustomLineHeightSpans are available, while AlignSpan not available.
1.8	task	Verify if TextLayoutManager#buildSpannableFromFragment is called in Fabric. The methods adds several types of Spans, but misses ReactAlignSpan implementation.
1.9	task	Search for logic related to AbsSizeSpans, CustomStyleSpan and CustomLineHeightSpans that is not implemented in ReactAlignSpans and is responsible for adding/removing the spans from the Text
2	review	Review differences between CustomLineHeightSpans, CustomStyleSpan and ReactAlignSpans. CustomLineHeightSpans are retrieved with getSpans, but AlignSpans are not available.
2.1	task	Review implementation on GitHub of spans. Just read the implementation.
2.2	task	Inspect the text with android studio layout inspector and find the ReactAlignSpan in the test
2.3	task	Debug logic that retrieves spans. Verify spans are availabine in the text (link)
3	refactor	Move the logic for shifting text based on the lineheight to CustomStyleSpan (commit). Stash all your changes.
3.1	task	Resize dummy textPaint to caculate ascent/descent/textHeight (does not include logic to position smaller text)

P
type
task

1
review
Update PR Summary with links and info

2
review
Call setText with new new span. Don’t update existing span (android docs, code-review). Read the android docs if not clear (summary in PR)

2.1
task
Review ReactTextViewManager #updateExtraData logic that retrieves the lineHeight (link)

2.2
task
Read more about Binder Inter Process Communication (elinux explanation, google search)

2.3
task
Further investigate how AlignmentSpan #writeToParcelInternal

2.4
task
Understand if Layout ALIGN_CENTER is used to align nested Text (Android Spans)

2.5
task
Compare Layout #getLineRight and other methods with David Vacca implementation of inline images attachments.

2.6
task
Further read 2021 investigation around AOSP implementation of AlignmentSpans (comment on GitHub issue)

2.7
task
Layout #drawText draws the ParagraphSpans with different styles using TextLine #recycle is used to update the text line (textpaint..etc..)

2.8
task
Read again best practices on using spans (link) and avoid mutation

P	type	task
1	review	Update PR Summary with links and info
2	review	Call setText with new new span. Don’t update existing span (android docs, code-review). Read the android docs if not clear (summary in PR)
2.1	task	Review ReactTextViewManager #updateExtraData logic that retrieves the lineHeight (link)
2.2	task	Read more about Binder Inter Process Communication (elinux explanation, google search)
2.3	task	"Further investigate how AlignmentSpan #writeToParcelInternal, uses Parcel to change the span text alignment (left, center or right).
2.4	task	Understand if Layout ALIGN_CENTER is used to align nested Text (Android Spans)
2.5	task	Compare Layout #getLineRight and other methods with David Vacca implementation of inline images attachments.
2.6	task	Further read 2021 investigation around AOSP implementation of AlignmentSpans (comment on GitHub issue)
2.7	task	Layout #drawText draws the ParagraphSpans with different styles using TextLine #recycle is used to update the text line (textpaint..etc..)
2.8	task	Read again best practices on using spans (link) and avoid mutation

P
type
task

1
bug
Test again regression caused by calling setText after mutating span (GitHub comment). The parent text shifts down when changing child baseline.

1.1
task
Set parent text gravity top and verify change in behaviour

1.2
task
Comment logic in ReactTextView#setText and verify change in behaviour

2
bug
Parent text ancestor changes the baseline, when child has textAlignVertical TOP (video).parentTextPaint.baseline += (highestLineHeight / 2) / 2;As a consequence of the change in baseline of the parent Text compoment, the child does not align to the top of the TextView.childTextPaint.baseline -= (highestLineHeight / 2) / 2;

3.1
hypothesis
The issue is caused by parent Gravity.TOP. The parent text baseline changes when one of the child has textAlignVertical top or center.

3.2
task
Debug CustomStyleSpan logic that changes the TextPaint #baseline. Log values of mCurrentText, mHighestLineHeight, textPaint.baseline

3.3
solution
Reproduces without using Gravity.TOP. For example, using textAlignVertical: bottom, the child component does not correctly align (link). The child component correctly aligns top and bottom, but does not align correctly to the center.  Technically we don’t change anything with center, so this could be caused by missing update.

4
hypothesis
The TextView has an invisible margin. The TextView height does not correspond to the yellow background. The Text can not go over the invisible margin.

4.1
task
Use a lower value of highestLineHeight and verify if the parent component shifts (video).

5
hypothesis
The shift of position is triggered by changing the length of the text. Changing the text from top to bottom, causes a change in the total length of the text and the position.

5.1
task
Avoid changing the text of the string when you change the variable textAlignVertical (video).

6
hypothesis
It is caused by buildSpannableFromFragment (setText)

6.1
task
Remove logic from buildSpannableFromFragment.

6.2
solution
It is not caused by logic in buildSpannableFromFragment.

7
hypothesis
The issue seems to be caused by the first render. When the text is first rendered, the text is aligned to the top of the View. Changing the child baseline to -50 (shift top), will make it reach the top of the view and cause the baseline of the parent to change of +25. When the text is actually rendered, the parent text is positioned with gravity.CENTER, but the original shift of +25 on the baseline persists.

7.1
task
Record a video, showing how changing the baseline causes child to reach the top and shift parent. The issue caused by the first render in React, and shifting the baseline when parent is not correctly positioned with Gravity.Center (video)

7.2
task
Call setText before updating the span with span.updateSpan. The functionality should work without issues. Check the diff and revert changes until functionality works.

7.3
task
Review bug fix for Text gravity commit

8
review
Read implementation of setText and find logic that can fix problem with alignment

P	type	task
1	bug	Test again regression caused by calling setText after mutating span (GitHub comment). The parent text shifts down when changing child baseline.
1.1	task	Set parent text gravity top and verify change in behaviour
1.2	task	Comment logic in ReactTextView#setText and verify change in behaviour
2	bug	"Parent text ancestor changes the baseline, when child has textAlignVertical TOP (video).
parentTextPaint.baseline += (highestLineHeight / 2) / 2;
As a consequence of the change in baseline of the parent Text compoment, the child does not align to the top of the TextView.
childTextPaint.baseline -= (highestLineHeight / 2) / 2; "
3.1	hypothesis	"The issue is caused by parent Gravity.TOP.
The parent text baseline changes when one of the child has textAlignVertical top or center. "
3.2	task	"Debug CustomStyleSpan logic that changes the TextPaint #baseline.
Log values of mCurrentText, mHighestLineHeight, textPaint.baseline"
3.3	solution	Reproduces without using Gravity.TOP. For example, using textAlignVertical: bottom, the child component does not correctly align (link). The child component correctly aligns top and bottom, but does not align correctly to the center.  Technically we don’t change anything with center, so this could be caused by missing update.
4	hypothesis	"The TextView has an invisible margin.
The TextView height does not correspond to the yellow background. The Text can not go over the invisible margin."
4.1	task	Use a lower value of highestLineHeight and verify if the parent component shifts (video).
5	hypothesis	"The shift of position is triggered by changing the length of the text.
Changing the text from top to bottom, causes a change in the total length of the text and the position."
5.1	task	Avoid changing the text of the string when you change the variable textAlignVertical (video).
6	hypothesis	It is caused by buildSpannableFromFragment (setText)
6.1	task	Remove logic from buildSpannableFromFragment.
6.2	solution	It is not caused by logic in buildSpannableFromFragment.
7	hypothesis	"The issue seems to be caused by the first render.
When the text is first rendered, the text is aligned to the top of the View. Changing the child baseline to -50 (shift top), will make it reach the top of the view and cause the baseline of the parent to change of +25.
When the text is actually rendered, the parent text is positioned with gravity.CENTER, but the original shift of +25 on the baseline persists."
7.1	task	Record a video, showing how changing the baseline causes child to reach the top and shift parent. The issue caused by the first render in React, and shifting the baseline when parent is not correctly positioned with Gravity.Center (video)
7.2	task	"Call setText before updating the span with span.updateSpan.
The functionality should work without issues. Check the diff and revert changes until functionality works."
7.3	task	Review bug fix for Text gravity commit
8	review	Read implementation of setText and find logic that can fix problem with alignment

I deleted the branch for mistake


view private key ?

How can we view the private key ?

Just added a getPrivateKey() method in the latest version - 0.5.0.


Pipeline barriers are placed according to draw/dispatch calls rather than binding calls

Changelog:
- Fixed synchronization bug where pipeline barriers were placed based on the binding of resources instead of the draw/dispatch calls that use them.
- `SyncCommandBufferBuilder` and `UnsafeCommandBufferBuilder` accept any `IntoIterator` where they previously only accepted `Iterator`.

This fixes #1635. In order to do this, quite a few changes needed to be made elsewhere, some of which were in separate PRs that have already been merged. This PR contains only internal changes, nothing user facing. The following changes were made internally to SyncCommandBufferBuilder:

The builder now tracks which binding state was most recently set by which command.
FinalCommand is gone, so the built command buffer now uses the regular Command.
Each Command is now stored in an Arc instead of a Box, which allows them to be referenced from multiple locations. A future PR could probably change the remaining cases where a command index is used to simply clone the Arc.
Using this, draw and dispatch commands can now hold references to the bind commands that set the state they use.

Now that SyncCommandBufferBuilder is tracking binding state, it partially overlaps in function with StateCacher. This could allow a future PR to make the latter obsolete entirely.

Do barriers need to be in between other calls such as copy_buffer() & copy_image()? I don't understand completely where barriers need to be inserted.

Barriers need to be inserted somewhere between two commands, if one of the commands writes to the resource. The problem that this PR fixes is that previously, the bind commands would be taken as accessing the resources, when in reality bind commands don't access resources, they just insert a link to them in some internal Vulkan table. The commands that actually access the bound resources are the draw/dispatch commands, but those were actually not marked as accessing the resources in Vulkano. Hence bug #1635. This PR fixes that so that draw/dispatch commands are marked as accessing previously bound resources, while the bind commands themselves are no longer marked.

Thanks for explanation, just wanted to make sure I understood before I merged.


Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.

Describe the Bug
WARN  Require cycle: node_modules/react-native-track-player/src/index.ts -> node_modules/react-native-track-player/src/hooks/index.ts -> node_modules/react-native-track-player/src/hooks/useIsPlaying.ts -> node_modules/react-native-track-player/src/index.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.

Steps To Reproduce
Just install player and run app
Environment Info:
Paste the results of npx react-native info
System:
    OS: macOS 14.5
    CPU: (10) arm64 Apple M1 Pro
    Memory: 66.25 MB / 32.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 21.7.3 - /opt/homebrew/bin/node
    Yarn: 1.22.19 - /opt/homebrew/bin/yarn
    npm: 10.8.1 - /opt/homebrew/bin/npm
    Watchman: 2<IP_ADDRESS> - /opt/homebrew/bin/watchman
  Managers:
    CocoaPods: 1.11.3 - /Users/roman/.asdf/shims/pod
  SDKs:
    iOS SDK:
      Platforms: DriverKit 23.5, iOS 17.5, macOS 14.5, tvOS 17.5, visionOS 1.2, watchOS 10.5
    Android SDK:
      API Levels: 31, 33, 33, 34
      Build Tools: 30.0.3, 33.0.0, 33.0.1, 34.0.0
      System Images: android-33 | Google APIs ARM 64 v8a, android-34 | Google APIs ARM 64 v8a, android-34 | Google Play ARM 64 v8a, android-TiramisuPrivacySandbox | Google Play ARM 64 v8a
      Android NDK: Not Found
  IDEs:
    Android Studio: 2024.1 AI-241.18034.62.2411.12071903
    Xcode: 15.4/15F31d - /usr/bin/xcodebuild
  Languages:
    Java: 11.0.18 - /usr/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 18.0.0 => 18.0.0
    react-native: 0.69.4 => 0.69.4
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

Paste the exact react-native-track-player version you are using
"react-native-track-player": "^4.1.1",
Real device? Or simulator?
simulator
What OS are you running?
macos

please reopen this ticket


Use mapNotNull() extension.

Use Kotlin's mapNotNull extension in Cookie.parseAll().

@swankjesse no objection from me.
But I seem to remember we avoided (early) kotlin loops because of allocations, is that a concern here? the current implementation seems allocation free for the no headers case which is the majority.

@swankjesse no objection from me.
But I seem to remember we avoided (early) kotlin loops because of allocations, is that a concern here? the current implementation seems allocation free for the no headers case which is the majority.

The empty case will allocate an iterator, a backing mutable list, and an unmodifiable wrapper. Before it allocated nothing.
The non-empty case adds an additional iterator allocation to the previous code.

The empty case will allocate an iterator, a backing mutable list, and an unmodifiable wrapper. Before it allocated nothing.
The non-empty case adds an additional iterator allocation to the previous code.

Going to close this, while I don't have a strong objection, I'd be just as likely to accept the reverse as an optimisation.

Going to close this, while I don't have a strong objection, I'd be just as likely to accept the reverse as an optimisation.

@Isira-Seneviratne could you raise an issue to discuss future changes before going ahead? I feel bad closing these and you having lost some time on them.

@Isira-Seneviratne could you raise an issue to discuss future changes before going ahead? I feel bad closing these and you having lost some time on them.

@Isira-Seneviratne could you raise an issue to discuss future changes before going ahead? I feel bad closing these and you having lost some time on them.

Sure.

@Isira-Seneviratne could you raise an issue to discuss future changes before going ahead? I feel bad closing these and you having lost some time on them.

Sure.


Sort on string fields

Is your feature request related to a problem? Please describe.
Currently it seems the Meilisearch's bucket sort is limited to numerical fields by design.
In order to streamline the use of the search engine, we would like to use it to retrieve even simple lists. Yet one of the most recurring limitation is the impossibility to sort by String (ex: title, slug, email, ...).
Describe the solution you'd like
We would like to be able to sort by string. In our case, we would be fine with a limited way to do so, like the one I describe in the alternatives section.
In the meantime:

I'd love to have your input on how well you think our solution would hold at scale (sorting on large numbers).
I believe sorting strings is not ideal for a search engine, but I wonder what is your opinion on this kind of features.

Describe alternatives you've considered
We added the feature ourselves, with a naive (naturally flawed) way to convert string fields into a numerical field to sort onto... It basically feels as unoptimised as it can get 😄, but it works on small projects, and I haven't started benchmarking the thing.
The idea is simply the convert the N first alphaNumerical characters into Hex values. It results in a (big) numerical value.
It is very-much half-baked at the time (intl, word separation, etc) and it has limitations too, but the feature is kinda there.
As you can see below, a string like  Alice In Wonderland gets converted to a large number<PHONE_NUMBER>327378328779786869827665786800 (bigger than MAX_INT).

The sort works fine, but do you see limitations ? at scale maybe, or in performance ?

function sortableString(str: string, maxLength: number = 20) {
    const standardString = str.trim().slice(0, 100).toLocaleUpperCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
    return standardString.split('', maxLength).reduce((res, c) => {
        if (isAlphaNumeric(c) || (c === ' ' && res[res.length - 1] !== '32')) {
            res.push(String(c.charCodeAt(0)).padStart(2, '0'));
        }
        return res;
    }, [] as string[]).join('').padEnd(2 * maxLength, '0');
}

Result:
{
    hits: [
        {
            id: '14',
            title: 'Alice In Wonderland',
            sortable_title: '6576736769327378328779786869827665786800'
        }, {
            id: '4',
            title: 'Harry Potter and the Half-Blood Prince',
            sortable_title: '7265828289328079848469823265786832847269'
        }, {
            id: '456',
            title: 'Le Petit Prince',
            sortable_title: '7669328069847384328082737867690000000000'
        }, {
            id: '123',
            title: 'Pride and Prejudice',
            sortable_title: '8082736869326578683280826974856873676900'
        }, {
            id: '42',
            title: "The Hitchhiker's Guide to the Galaxy",
            sortable_title: '8472693272738467727273756982833271857300'
        }, {
            id: '1044',
            title: 'The Hobbit',
            sortable_title: '8472693272796666738400000000000000000000'
        }
    ],
    offset: 0,
    limit: 20,
    nbHits: 9,
    exhaustiveNbHits: false,
    processingTimeMs: 0,
    query: ''
}

Hello @theo-lubert,
This is an appriate solution, a nice work around, however there is some flaws in it, the maximum value that MeiliSearch is able to handle is an u64 MAX, there also is another little point, in your example you use a string to store the generated numbers but it must be a string for meilisearch to accept it.

As an alternative, you can also sort all of your documents before indexing and give associate to sortable_title the position in the sorted collection.
pro: you don't have the limitations from the previous method
cons: you have to re-index everything every time you add documents (to preserve the order)

Sorry, we decide to close this issue. We don't want to allow users to do this kind of action at the moment. Moreover, there are possible alternatives to do what you want.

I understand.
Just to sum up the two workarounds:

Pre-computing the order:
It means re-indexing everything every time the order changes (at least every thing "after" your updated row). This is a perfect solution if the index is static, or not likely to be updated often. But not an option if you need real time updates.
Storing a hash that can be sorted on:
It has flaws (ex: sort limited to N characters), but it is the only option if your index is updated on a regular basis, since you can update one entry at a time, without the need of re-indexing


Progress?

Hi.
I've been following this project for a while.
It's been about a year if not more that you guys have been working on this.
Aidan has been neglecting his version of ICBM as well, refusing to update or enhance it or answer.
All I want to know is, will you guys be able to finish this off and make a healthy version anytime soon
I would love to see these module based missiles actually do what they promised to do.
TBH all you need is:
#1. Radar
#2. Electrical Input
#3. ComputerCraft methods
#4. better launch systems.
#5. Ability to traverse worlds.
Everything else seems good. But I think better textures and models would be nice.
I know it seems like I have no idea how much work it takes to do all this, but in all honesty I don't mean to be rude but you guys have had this project for a year. And all i see is a new type of missile being implemented while radars, launch UI's, electrical requirements all remain neglected. I mean we don't need anymore "Cake" or "Dye" missiles.
We need your modular missiles to work like promised, from launch silos that consume energy and in different tiers so that each one can reach a different difficulty of target.
If you find the time to do some significant overhaul, just keep pushing.
I used to write Lua code for ComputerCraft with the original ICBM Mod and DefenseTech.
I spent around 5-6 hours in a row getting a Anti-Ballistic Missile program working.
Basically what I am trying to say is.
You have too many projects to work on, many of which require too much effort and time.
You are juggling one of the greatest mods of all time with a bunch of new ones you want to make.
If you concentrate all your effort into making a seamless and polished ICBM mod, you will be surprised by the amount of people that will go through your Adf.ly links to download it.
Finish the mod, and reap the benefits of being loved and cash from the links.
Andrew (ICBM Enthusiast since 2013)

Stuff will happen, it takes time especially with me being the only dedicated coder on the team.
Most of this stuff is planned but the focus right now is json loaders & 1.8 update
Radar will most likely not be added to this mod. There will be a sub mod dedicated just to radar and other support tools. This way people are not forced to install a missile mod to use radar for things like plane detection.
I've updated the classic version of ICBM already https://github.com/BuiltBrokenModding/ICBM-Classic it has most of what you want in it already.
Computer craft support is not easy due to dependency injection and stripping. though ICBM does have open computer support for the advanced remote launch system.
Its highly likely automated Anti-Ballistics systems will be added.


High CPU Utilization

Describe your question
When i test  mqttnet performance，1500 topic published every second，the cpu utilization rate up to 40%  even more
My cpu is I7 9th gen
how can i reduce cpu utilization？
Which project is your question related to?

ManagedClient
MQTTnet.Server standalone

if you executing program on visual studio, as much as i know, visual studio's limits cpu usage. You run on dotnet cli or change dotnet environment like this maybe can be does
{   "profiles": {     "Broker": {       "commandName": "Project",       "environmentVariables": {         "DOTNET_ENVIRONMENT": "Production"       }     }   } }

Which QoS level to you use? You get the fastest performance with QoS 0. If you problem still exists please reopen the ticket.


[Bug] do you have this working?

Hi
I am looking for a plugin that I can hook Push notification in maui .net 7 and 8 and came across this. Did you actually manage to get it working?
Really interested to know.. I get all sorts of issue with path length on win11 even though I have shortened my nuget path to just C:/nuget
Can you receive notification for both iOS and android?
thanks

Yeah, I know what you mean. There are some plugins but most of them are outdated or not working at all. I’m migrating an app from XF to MAUI .NET 7, but just for Android and iOS. My goal was to have something similar to the exising plugin (Plugin.FirebasePushNotification). It looks like this plugin is not maintained anymore and since we have a tight migration schedule, I had to act quickly.
The code in this library works for our cases. There is yet alot of cleanup work to be done. The original code is full of static state and has some major quality issues. I gonna tackle them as soon as I have some time. I keep you updated.

@thomasgalliker I am absolutely in the same position... None works and outdated and its such a critical mobile functionality.
I am thinking of re-inventing the wheel myself but there is a lot to grasp specially on android...
Please keep me uptodate.

The plan is to leave the current code base as it is and publish it as version 1.x in nuget.org. Can you check if the latest version of the nuget package works for you? https://www.nuget.org/packages/Plugin.FirebasePushNotifications
Later, I want to rework the code base, add some queuing to the push notification events, and more stuff. These changes are planned for a version 2.x and will introduce breaking API changes.

hi the problem I have and I believe its a xamarin.iOS issue is that the path is too long - I have win11 and I have already enabled long path but I get

Just to be clear: This project here will not work with Xamarin, it targets .NET MAUI for Android and iOS.

that was not xamarin that was a brand new maui app  net 7 or 8!!  the packages used are not added by me but from  your plugin..

Create a maui app .net 7 or 8
Add your plugin
get that error on windows 11

Obviously they left some nuget names. I have not a clue whats wrong there. I develop my app on MacOS with Rider IDE. But it slso works on Windows 10 with VS 2022.
I would recommend to checkout code with short paths. Other than that, I‘m not a big help.

Hi I am not expecting anything , and thanks for sharing this.. but anyone with a windows 11 and using windows as the main developer machine will not be able to install it
https://developercommunity.visualstudio.com/t/An-error-occurred-on-client-Build1647054/10370055#T-ND10375724
and there are many issues around long path with workaround etc.. because of this my nugets are now on c:/nugets
thanks

Crazy, absolutely crazy. I was waiting with Windows 11.... just as I was waiting with Xamarin Forms >> MAUI migration. But after some time at the market we could expect things to be more mature and stable... Obviously not. I'm sorry to hear this.

use plugin.firebase.cloudmessaging instead of plugin.firebase. I finally got it working yesterday for maui7, atleast until this package of Thomas is working on all devices :) Really excited for your finished package Thomas!

You need a combo of plugin.firebase.cloudmessaging, plugin.firebase.auth and plugin.firebase.dynamiclinks. Use the Nuget package manager console NOT the nuget project editor, it wont work. I recommend always using the package manager console for all nuget packages to bypass the long path issue

@Jawah537 really interested in what you have it working . Do you have it working in both iOS and android? Do you use a PC or Mac. do you have a solution we can look at?  many thanks

I‘m on it. Its a lot of legacy code to be cleaned up. There will also be a sample app which demonstrates all the features of the library. I‘m currently testing all the different notification types, if they‘re handled properly.

The current develop branch is published on nuget.org. The refactoring-cleanup branch is work-in-progress. Im still on it. I have some changes uncommited; so no guarantees that it works. 😏 Sorry for the delay. Its a lot going on right now.

Is anyone still interessted in this plugin? I just published a new pre-release of version 2.x on nuget.org:
https://www.nuget.org/packages/Plugin.FirebasePushNotifications
If someone offers to integrate this nuget in their solution, I can assist with help. Most of the API calls should be self-explanatory or similar to the predecessor plugin.

I am using it, but am having issues getting it to work on IOS. It's probably unrelated though to your project :P

I’ve been messing with the refactor branch and have got all the things working finally 😎

I’ve been messing with the refactor branch and have got all the things working finally 😎

Including android notifications in release mode? ❤

I’ve been messing with the refactor branch and have got all the things working finally 😎

Including android notifications in release mode? ❤
Repro: deploy on Android in release mode. Close application. Send notification. Nothing happens?

Yeppers, though I never had an issue with android in any of the branches, only ios was troublesome for me

I will try to reproduce your issues. Maybe its advisable if we deal with all these issues in separate threads (open new issue).
Please forgive my response times. I‘m very busy at the moment 🙃 (just as everyone of us, I guess).

I’ve been messing with the refactor branch and have got all the things working finally 😎

Including android notifications in release mode? ❤
Repro: deploy on Android in release mode. Close application. Send notification. Nothing happens?

Yeppers, though I never had an issue with android in any of the branches, only ios was troublesome for me
Thanks for that! That gave me the incentive to finally give it a go again!
I also have the refactor branch op and running, thanks thomas for your work.

Okay so I think I'm zeroing in on the issue I'm having. The issue I think I have is that FirebaseMessagingService.OnMessageReceived for some reason does not get triggered when only a data message is sent and built in AOT. This is the alternative way to receive notification messages I guess. I have not tried using "PNFirebaseMessagingService" yet in Thomas's code, but I suspect it suffers the same fate.
The only reason I'm doing this is because I want to show the mini popup in the screen when the application is not open, like this (this is my own App showing the notification).
I'll create a new issue for this after I've done some constructive research and tested "PNFirebaseMessagingService" and keep it out of this topic. If anyone knows how to present a notification like this though without using this override method let me know! Because that'd help me too! a lot!

First of all, thank you very much for your work. Since other plugins cannot be compiled in visual studio (the path size problem).
I have tested version 2.2.2 with .net 8 to see if I can use it in my applications and it has worked very well, for now I have only had one problem on iOS and that is that with the app stopped it does not show me the push, but for now I have only tested that it works in general for Android and iOS.
Soon I will start including it in one of the apps.
Thank you very much again!!

Thanks for your work, we do have an android application working through MAUI that we want to deploy on IOS. I've hit the "path size problem" wall and ended up here trying to implement this plugin.
I had no issue so far with android, but when trying to run the IOS application on debug mode the application crash during start-up :
[0:] An error occurred: 'Object reference not set to an instance of an object.'. Callstack: '   at Plugin.FirebasePushNotifications.Platforms.FirebasePushNotificationManager.ConfigurePlatform(FirebasePushNotificationOptions options)
at Plugin.FirebasePushNotifications.Platforms.FirebasePushNotificationManagerBase.Configure(FirebasePushNotificationOptions options)
at Plugin.FirebasePushNotifications.MauiAppBuilderExtensions.<>c__DisplayClass0_0.b__3(UIApplication application, NSDictionary launchOptions)
at Microsoft.Maui.MauiUIApplicationDelegate.<>c__DisplayClass6_0.b__1(FinishedLaunching del)
at Microsoft.Maui.LifecycleEvents.LifecycleEventServiceExtensions.InvokeLifecycleEvents[FinishedLaunching](IServiceProvider services, Action`1 action)
at Microsoft.Maui.MauiUIApplicationDelegate.FinishedLaunching(UIApplication application, NSDictionary launchOptions)
...
If you have any idea where this could come from i could definitly use some help. I'll keep on trying to resolve it anyway.

Thanks for your work, we do have an android application working through MAUI that we want to deploy on IOS. I've hit the "path size problem" wall and ended up here trying to implement this plugin. I had no issue so far with android, but when trying to run the IOS application on debug mode the application crash during start-up :
[0:] An error occurred: 'Object reference not set to an instance of an object.'. Callstack: ' at Plugin.FirebasePushNotifications.Platforms.FirebasePushNotificationManager.ConfigurePlatform(FirebasePushNotificationOptions options) at Plugin.FirebasePushNotifications.Platforms.FirebasePushNotificationManagerBase.Configure(FirebasePushNotificationOptions options) at Plugin.FirebasePushNotifications.MauiAppBuilderExtensions.<>c__DisplayClass0_0.b__3(UIApplication application, NSDictionary launchOptions) at Microsoft.Maui.MauiUIApplicationDelegate.<>c__DisplayClass6_0.b__1(FinishedLaunching del) at Microsoft.Maui.LifecycleEvents.LifecycleEventServiceExtensions.InvokeLifecycleEvents[FinishedLaunching](IServiceProvider services, Action`1 action) at Microsoft.Maui.MauiUIApplicationDelegate.FinishedLaunching(UIApplication application, NSDictionary launchOptions) ...
If you have any idea where this could come from i could definitly use some help. I'll keep on trying to resolve it anyway.

I will start with another MAUI migration in 1-2 weeks from now. I will for sure look into this issue by then. Maybe earlier. Can you open a new issue, so we can keep track of this!

I'm still working on it.
It seems the issue is related to this https://github.com/xamarin/GoogleApisForiOSComponents/issues/486
I am indeed testing it on a local iphone and deploying it from visual studio on windows, paired to a mac.
Right now i'm updating to net8.0 and i'll go back to it later, i'll open an issue if needed then.

Has anybody got this or anything else to do cross platform push on MAUI working. Every time i try to import anything y whole project gets trashed and i have to stat over with a new project. Using Visual Studio 2022 .NET MAUI

I would also like to know if anyone has successfully gotten this to work on both iOS and Android under .Net 8? I have an app that is running up against a deadline and I'm wondering it I have to change to something else.

Please note that MS has deprecated the iOS side of it so either you create your own bindings or kind of stuffed.

Im currently migrating a huge Xamarin app to .NET MAU (net8.0-android and -ios) @donmesserli
This week I will care about firebase push notifications. So, if there is anything weing in this library, it will be fixed. We are building our app on top of this, no matter what.
@developer9969 what exactly is deprecated? A nuget package we depend on here?

Use 3rd party firebase is moving to a more @Sell to middlemen@ kind of
approach. Onesignal is all you need
Digital Content Solutions
On Mon, Apr 29, 2024 at 10:24 PM Thomas Galliker @.***>
wrote:

Im currently migrating a huge Xamarin app to .NET MAU (net8.0-android and
-ios) @donmesserli https://github.com/donmesserli
This week I will care about firebase push notifications. So, if there is
anything weing in this library, it will be fixed. We are building our app
on top of this, no matter what.
@developer9969 https://github.com/developer9969 what exactly is
deprecated? A nuget package we depend on here?
—
Reply to this email directly, view it on GitHub
https://github.com/thomasgalliker/Plugin.FirebasePushNotifications/issues/3#issuecomment-2083599141,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AP7XHX5JIOOLRXNEGGILE6TY72UBBAVCNFSM6AAAAAA5NO2O6WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBTGU4TSMJUGE
.
You are receiving this because you were mentioned.Message ID:
<thomasgalliker/Plugin.FirebasePushNotifications/issues/3/2083599141@
github.com>

@thomasgalliker Hey! Can you please share if you don't mind, how to update the Notification Icon and how to handle Tap on Notification? because right now nothing really happens :(
Thank you a lot!

@thomasgalliker Xamarin.Firebase.iOS.CloudMessaging will not longer be maintained and progressed by Microsoft so very soon your plugin will not longer work for iOS,
see these thread https://github.com/dotnet/maui/discussions/20359

Is there any replacement?

Officially no. They said we will provide u with some slim binding but no nugets
There is a guy in that thread that has moved them forward but now you are dependent on an individual. I am trying to make it work with azure hub as seems supported and they support fcmv1
but having some problems when app state is killed.
However MS support is absolutely rubbish
does your library work in all appstates in android?
Foreground background and killed? Using androind 14?

@gabsamples6 how do you suppose to replace Xamarin.Firebase.iOS.CloudMessaging?

Ok. Thanks for your response. I‘ll try to follow-up on this thread.
Regarding app states on Android: Yes, of course, I try to support all app states in this plugin. We need to have this in all our apps. If you have troubles using this plugin, consider opening a new issue and we can troubleshoot the problem.
If .NET MAUI does no longer provide support for Firebase on iOS, we will move to native push notifications:

APNS for iOS (no firebase needed)
FCM for Android (firebase needed)

We tried to avoid this „dual“ way because it makes things more complicated in the app and in the backend. If we are forced to go down this road, I‘ll rewrite this plugin.

Hi Thomas,
Great work sofar!
I have an app that will be released for Android and Ios later on .net 8.0, it is a ported xamarin.forms project. I was very happy with your project as I only had to change very little.
I managed to install the production version 1.0.26. with the usual path issues. C:\Nuget resolved and the registry patch resolved that.
On Android it all works.
I now suffer from 1 already reported issue:
The iOS version (debug - native device) does not start and gives a "null reference exception" on start, it only reports that it is in Plugin.FirebasePushNotifications.
I will try the pre-release 2.0.16 and see how that's behaving...

How does the discontinuation of FCM affect the plugin. From what I understand, their classic APIs won't work anymore, but the v1 APIs will. Also, they no longer provide a backend and you have to roll your own and keep track of tokens, etc. Am I incorrect? I received a long explanation from OneSignal about it.

@donmesserli I think you will just have to use Google‘s latest Firebase Admin SDK which uses the „new“ FCM V1 API and you‘ll be fine. If you send FCM messages using your own implementation, you‘ll have to use the V1 API URL POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send as described here.
As far as I know - please correct if I‘m wrong - the change from FCM legacy API to FCM V1 API has no effect on the client-side implementation (in the app). But again, confirm/correct me on this if you have other knowledge.

Dear all! Thanks for all the feedback in this topic! We can get this thing to work but it requires more effort. I‘m currently working long days and nights to get things sorted out. Version 1.x of this plugin was pretty ugly, with lots of static code, contradiction, duplication,… Version 2.x and later should be more modern, cleaned-up and easier to use. There will be breaking changes if you upgrade major versions.  I‘ll be there to answer questions as good as I can and in the time I have left for open source projects.
To continue in a more structured way, I‘d like to close this issue. Please open a new issue if you experience a problem or create a new discussion if you want to share your ideas, code snippets, etc…


Why it does that
Briefly state why the change was necessary.
Further notes
List other areas of code that have changed but are not necessarily linked to the main feature. This could be method signature changes, package declarations, bugs that were encountered and were fixed inline, etc.
Linked Issue(s)
Closes #2934
Checklist

[ ] added appropriate tests?
[x] performed checkstyle check locally?
[x] added/updated copyright headers?
[ ] documented public classes/methods?
[ ] added/updated relevant documentation?
[ ] assigned appropriate label? (exclude from changelog with label no-changelog)
[x] formatted title correctly? (take a look at the CONTRIBUTING and Etiquette for pull requests for details)

@mf-isst Pls contact me via Teams


CY8CKIT_064S0S2_4343W: Fix MTB import and remove unsupported projects

CY8CKIT_064S0S2_4343W: Fix MTB import and remove unsupported projects
Description
A previous update to .project broke the ability to import aws_demos into MTB. This fixes the .project. In addition, no longer supported projects are removed (wifi_scanner and jitp).
Checklist:

[x ] I have tested my changes. No regression in existing tests.
[ ] My code is Linted.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/bot run checks

Has conflict with master branch. Resovled the conflicts and merged the changes in https://github.com/aws/amazon-freertos/pull/2596


add Cherry Studio to Community Integrations

Add an open source software：https://github.com/kangfenmao/cherry-studio

@kangfenmao possible to rebase? Thanks for the PR!

https://github.com/ollama/ollama/pull/6633


@BackLink is not available in 0.9.9

Here is my model
public class StudentModel{
@Id
private long id;
private String name;
private String rollNumber;
private String section;
private Date dob;
@Relation
private Sport sport;
private List  sportList;
}
@Entity
public class Sport {
@Id
private long id;
private String whatSport;
}
As per the documentation http://greenrobot.org/objectbox/documentation/relations/
for ToMany relations use @Backlink when I am trying to use in above context(sport list). I am not able to find the annotation.
If we have Maps and List / List or primitive type how do we handle the relations.

How do I handle such models now?
Which has a inner lists inside with the children at this point of time.

Any update?

Oops!... :(
Approximate support for this feature ?

I'm waiting also for a many-to-many relationships

Any update on this? We are on decide our DB for the project Realm vs ObjectBox. At least tentative date is appreciated.


Unbreak stuff

Both functions call get_api() ina pre-refactoring
(see f4a2b05ee3bed7bafa730834c8c792fddcce6119) fashion that simply does
not work anymore. The proper way to fix this would be to support different
styles (password, token, etc) but for now I just want to make git hooks
usable again.

Hi. We don't use pull requests. Can you post this on https://reviews.reviewboard.org? Thanks!

Well, I did: https://reviews.reviewboard.org/r/9198/diff/1
No replies since.

Sorry for the wait on it. We've been heads-down getting Review Board 3.0 beta 2 ready for release for tomorrow, and on-boarding a new group of students for an educational mentoring program we take part in. I promise we'll get to the change once we come up for air and start on the next RBTools release.

Okay, thanks.


pub/sub: remove old samples once location update

Remove old samples once location has been updated in this PR

@laljikanjareeya Old samples are safe to be removed now. Thanks!

@anguillanneuf Thank for the update!!


How to configure model-viewer bounds for animated models?

Description
Seems it is not possible to change how model-viewer presents a model - the bounding box seems to come from the original, un-animated model (?).
In this case, we have a typical "explosion view" where the model expands beyond the un-animated bounding box. Ideally, bounding box would be user-specifiable so that it could be adjusted for this; if it needs to be automatic, it might be possible to automatically generate it from the largest bounding box during animation.

I guess (haven't tried yet) a workaround is to have teeny tiny little objects (that are essentially invisible) on the "edges" of the animation bounding box to force a larger bounds area.
Live Demo
https://glitch.com/edit/#!/bright-lunaria
Browser Affected

[X] Chrome
[ ] Edge
[X] Firefox
[ ] Helios
[ ] IE
[X] Safari

OS

[X] Android
[X] iOS
[ ] Linux
[ ] MacOS
[X] Windows

Versions

model-viewer: latest
three.js: latest

@soraryu Indeed, this is a limitation. Unfortunately I have no performant way to calculate the bounds of an animated model. Currently the calculation is based on the resting position, so you could make the "largest" animation frame the resting position and then select a different animation when starting to present. However, the primary means we give to address this is to change the camera attributes (orbit radius, target) so that you can control framing manually instead of using the calculated values.

@soraryu Also, changing the attributes manually might be nice, since you could choose to frame the model close at first, then pull back when playing the exploding animation.


Merge multiple time ranges in the output file

YT-DLP's --download-sections supports downloads from multiple time ranges. It's possible to save each one as a separate files (etc, 0001.mp4, 0002.mp4) by using the -o "%(title)s-%(autonumber)s.%(ext)s" in the output file. For example:

yt-dlp -f 18 https://www.youtube.com/watch?v=q5egaM2hibs --download-sections "*0:0-0:05" --download-sections "*05:02-05:04" --download-sections "*15:12-15:14" --download-sections "*22:32-22:37" --download-sections "*38:42-38:49" -o "%(title)s-%(autonumber)s.%(ext)s"

If %(autonumber)s don't use, YT-DLP naturally cannot save other time ranges in the output file. Because it saves the time range to the output file, it cannot merge the other time ranges into the output file and says 'already downloaded'.
My goal is to merge all time ranges in the output file.
When this feature learned that it is not supported for now, I tried a workaround. When you decide to add this feature to YT-DLP, I share it in terms of giving you an idea.
(in CMD of Windows):
:: 1
:: Detecting title of video/audio and assign to environment variable

for /f "tokens=*" %a in ('yt-dlp "https://www.youtube.com/watch?v=q5egaM2hibs" --get-filename -o "%(title)s"') do set "FileNameTitle=%a"

:: 2
:: Extracting time ranges to seperate auto-files

yt-dlp -f 18 https://www.youtube.com/watch?v=q5egaM2hibs --download-sections "*0:0-0:05" --download-sections "*04:45-05:00" --download-sections "*15:10-15:17" --download-sections "*22:32-22:39" --download-sections "*38:42-38:51" -o "YTDLP-Extract_%(autonumber)s.%(ext)s"

:: 3
:: Merging all the time ranges downloaded to separate files under single file - by Pipe method.

(FOR /F %A IN ('dir /od /b "YTDLP-Extract_*"') DO @echo file '%A') | "ffmpeg-4.3.1.exe" -protocol_whitelist file,pipe -f concat -safe 0 -i pipe: -c copy "%FileNameTitle%_TimeRangesMerged.mp4"

:: 4
:: Deleting all time ranges downloaded as separate files.

FOR /F %A IN ('dir /od /b "YTDLP-Extract_*"') DO DEL /F /Q "%A"

P.S.: Why FFmpeg 4.3.1? Because FFMpeg 5.0's pipe method is now broken. This also confirmed in here.

The issue template is there for a reason. Don't remove it!

The issue template is there for a reason. Don't remove it!

Sorry. I can't revert checklist template to the issue report from edit History.

It's fine for now. But please keep in mind for future

Hi guys,
just would like to ask a similar question about using yt-dlp and found this thread already so maybe I can just ask my question right here too. I wanna also download multiple video parts / portions from one single video and merge them together into a new single file and optional deleting all created single files at the end. So my first question would be whether those tasks are doable at once just using yt-dlp command line without any manually made batch file?
Mini-Example: Commandline / any youtube URL
yt-dlp" -f best "$url" --download-sections "*00:00-00:30" --download-sections "*02:00-02:30" -o "%(autonumber)s - %(title)s.%(ext)s"
In this case I just wanna download 2 parts of same video what also works so far but I also wanna merge them together after the download with yt-dlp. In the docs I found that command called...
--postprocessor-args NAME:ARGS or just --ppa
...but how to use that command to merge the downloaded files (concat only / no re-encode)? I see I could use ffmpeg for example but how? Just wanna know whether the merge operation is doable with any yt-dlp command (adding to my commandline above) or not what means I have to merge the files manually together later. I just wanna do those steps at once with one commandline if possible. Maybe anyone of you guys could post me a example commandline whether its possible to use the --ppa command with ffmpeg to merge them after to one file. Thank you.

If you are familiar enough with ffmpeg, you could write a small script and call it in --exec after_video:. Otherwise, it's not possible to do

Thats really bad. So I thought it would be possible by using that postprocessor argument anyhow. If its not possible then it would be a good idea to improve yt-dlp by adding such function to merge files together when they was downloaded from the same file/video. Something like a simple basic merge function. Just think about it, lets say I download many little parts from a single online video (30+/-) and then I need to merge them together manually after by using any other tool/s or batch script but this is not really comfortable to dodge to other tools after. I would like to prefer using yt-dlp itself for this simple task to merge files without any detour just by using one complete yt-dlp commandline. Otherwise yt-dlp does already merge files together when downloading them (streams) with ffmpeg. Somehow it should be also possible to handle that too by itself or? Anyway, just wanna say that adding a function / commandline to merge those parts (same video) would be very nice. Maybe there is something doable in the future for you guys.


Fix issue for QEMU, support to run on QEMU-M3

@letanphuc I uploaded PR #1757 to fix the issues since several comments may be not easy for you to fix, could you help test it? Thanks.

I tested, it works as expected.
Thanks for correcting me

I tested, it works as expected. Thanks for correcting me

OK, I merged that PR, if you have extra fixings, please rebase with the main branch and add changes in this PR.


Add check for IOException error

Dropping this as we're now getting Unity to exit with the right code if there are build errors.


Add section on Transparent Proxying with flow diagram

This commit introduces a new section to the documentation that explains the concept and workings of transparent proxying. It includes a detailed sequence diagram illustrating the flow of the requests and responses to enhance the understanding.
Fixes #1287
Signed-off-by: Joe Dascole<EMAIL_ADDRESS>

Rendered: https://deploy-preview-1661--kuma.netlify.app/docs/2.6.x/networking/transparent-proxying/

This is very cool @dascole !

Due to divergences that proved challenging to resolve , I am closing this pull request. All updates from this PR will be moved and a new PR opened shortly.

new PR https://github.com/kumahq/kuma-website/pull/1692


jandex-maven-plugin throws IllegalArgumentException: Comparison method violates its general contract

I get the following exception when using jandex-maven-plugin 3.0.4 with Java 11.0.17:
java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.TimSort.mergeHi (TimSort.java:903)
    at java.util.TimSort.mergeAt (TimSort.java:520)
    at java.util.TimSort.mergeForceCollapse (TimSort.java:461)
    at java.util.TimSort.sort (TimSort.java:254)
    at java.util.Arrays.sort (Arrays.java:1515)
    at java.util.ArrayList.sort (ArrayList.java:1750)
    at org.jboss.jandex.Indexer.propagateTypeParameterBounds (Indexer.java:2422)
    at org.jboss.jandex.Indexer.complete (Indexer.java:2402)
    at org.jboss.jandex.maven.JandexGoal.execute (JandexGoal.java:163)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    ...

It seems that this Comparator used in Indexer#propagateTypeParameterBounds does not follow the contract required by java.util.Comparator?
Steps to reproduce:

git clone https://github.com/mvilliger/jandex-maven-plugin-iae.git
cd jandex-maven-plugin-iae
mvn clean verify -e

An additional note: It seems to be a regression as the older plugin org.jboss.jandex:jandex-maven-plugin:1.2.3 works fine on the same code base.

Okay, that's pretty bad. Thanks for reproducer!

It seems to be a regression as the older plugin org.jboss.jandex:jandex-maven-plugin:1.2.3 works fine on the same code base.

Yeah, Jandex 2.x didn't propagate type annotations across nested classes. That code is new in Jandex 3.

Wow, thank you very much for the incredibly fast fix!! 🎉
Do you already know when we could expect a 3.0.5 release to appear on Maven central?

I'll release 3.0.5 later today.

FYI, 3.0.5 is available in Central now.

Thank you very much!

I can confirm the issue is fixed 🎉👌


Drop support for extra commas in node patterns

Note: this is based on #4498.
The node pattern compiler had an undocumented and untested feature, in that it would allow any number of commas within patterns, e.g.:
(send, nil,, :foo)

IMHO, this only leads to less concise patterns, with more punctuation noise from non-functional characters. So I suggest dropping support.
The codebase currently doesn't contain any node patterns with commas, but there is a small chance there are user generated custom cops using this, which risk breaking.

Before submitting the PR make sure the following are checked:

[X] Wrote good commit messages.
[ ] Commit message starts with [Fix #issue-number] (if the related issue exists).
[X] Used the same coding conventions as the rest of the project.
[X] Feature branch is up-to-date with master (if not - rebase it).
[X] Squashed related commits together.
[X] Added tests.
[ ] Added an entry to the Changelog if the new code introduces user-observable changes. See changelog entry format.
[X] All tests(rake spec) are passing.
[X] The new code doesn't generate RuboCop offenses that are checked by rake internal_investigation.
[X] The PR relates to only one subject with a clear title
and description in grammatically correct, complete sentences.
[ ] Updated cop documentation with rake generate_cops_documentation (required only when you've added a new cop or changed the configuration/documentation of an existing cop).

👍 Just rebase on top of the current master.


[Component] Single checkbox extends it's content in stacks

When you add a single checkbox with another component in Stack view, single checkbox extends itself according to other components height.
It should protect it's height.
There is no issue on demo project. I discovered this issue while I was developing Formfield.

@alican I think I cannot really test this one.
You just need a non-regression right ?


Bump up go version to 1.8.5

Signed-off-by: Mrunal Patel<EMAIL_ADDRESS>- What I did
Updated golang to 1.8.5
- How I did it
Modifying the version in ansible.
- How to verify it
Tests pass.
- Description for the changelog
Bump up go to 1.8.5 in tests.

/test all

LGTM, but e2e_rhel is hiccuping.

/test e2e_rhel


[backport] CuPy JIT: Use C++-like typing rule in 'cuda' mode

Backport of #5028

[automatic post] Jenkins, test this please.

Jenkins CI test (for commit 2ab98104300796492d2a8eefc04f9f89fc03778e, target branch v9) failed with status FAILURE.

CI failure seems unrelated. LGTM.


PrivateDNSZones - Parameter for CosmosDB not working

We have deployed the policy set/initiative for the DNSPrivateEndpoints and it's been working fine so far with the resource types used.  Some colleagues recently added private endpoints for CosmosDB and we noticed that the policy was not firing to automatically create the entry in the privatelink DNS zone.
After validating that the policy was properly deployed and a bit of looking in the Msft documentation, seems that the NameSpace used in the parameter file is targeting Microsoft.CosmosDB/databaseAccounts. (https://github.com/Azure/CanadaPubSecALZ/blob/main/policy/custom/definitions/policyset/DNSPrivateEndpoints.parameters.json)
Looking at the built in policy to configure Cosmos DB with private endpoints, this policy targets Microsoft.DocumentDB/databaseAccounts instead.  After changing the namespace in the parameter file, the policy detected the private endpoints as non-compliant(which it did not do before) and executed the DeployIfNotExist privatelink entry.

Thank you for raising this issue.


Bump version number and fix string interpolation

Right after this was merged, they released another minor version. Also, the PR had the wrong quote marks.

Thank you for your contribution. Could you also change the commit message to include the name of the cask or app this commit affects.

@Ngrd fixed.


[UI] Add Icons to meshery dashboard- Recources div

Current Behavior
The current iteration of the dashboard doesn't have icons.
Desired Behavior
Add icons
Implementation

Acceptance Tests

Mockups

Contributor Guides and Handbook

🎨 Wireframes and designs for Meshery UI in Figma
🖥 Contributing to Meshery UI
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

Can i help out on this issue
I am new here and looking for getting started

Sure @anirudhp26 , that would be great

Is this issue done @Rohith-Raju ?

https://discuss.layer5.io/t/how-to-expose-nats-server-and-load-balancer/1150?u=rohith

@legendarykamal would you like to pick this up...I have exams coming up

https://discuss.layer5.io/t/how-to-expose-nats-server-and-load-balancer/1150?u=rohith

Here's my progress, as i ran into some issues.


TFLite 2.0.0 compilation errors in block_map.cc

Please make sure that this is a build/installation issue. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:build_template
System information

OS Platform and Distribution: Linux Debian buster
uname -a output: Linux freewave-ib 4.14.79-g3438de3474 #22 PREEMPT Mon Nov 4 20:16:15 UTC 2019 armv7l GNU/Linux
Mobile device: N/A
TensorFlow version: 2.0
Python version: 3.7.3
Installed using virtualenv? pip? conda?: none of the above
Bazel version (if compiling from source): Don't know
GCC/Compiler version (if compiling from source): g++ (Debian 8.3.0-6) 8.3.0,
GNU Make 4.2.1
Built for arm-unknown-linux-gnueabihf
CUDA/cuDNN version: Don't know
GPU model and memory: none

Describe the problem
When building the Pip package for TFLite, I ran across two bugs in the file tensorflow/lite/experimental/ruy/block_map.cc that caused the compilation to exit with an error.

The first bug was a missing header file, profiling/instrumentation.h.
The second bug was that the object gemmlowp was not declared before it was used.
There may be additional bugs as well. I stopped looking after I found these two, since I don't know
the code well enough to know what to look for.

(Peripheral to this issue, the two relevant scripts needed minor edits before they would work. I've included this information here for completeness, but the C++ source file is the larger, more important issue.

I edited the curl commands in download_dependencies.sh. The curl commands in lines 63 and 65 were edited to curl -Lsk, and the star-zip in line 65 was wrapped in double quotes, "*zip" .
I inserted the line TENSORFLOW_TARGET=rpi in build_pip_package.sh, just before line 42, to ensure that it compiled for an armv7l.
)

Commands used to replicate the issue
git clone -b master --depth=1 http://github.com/tensorflow/tensorflow
cd tensorflow
./tensorflow/lite/tools/make/download_dependencies.sh
./tensorflow/lite/tools/pip_package/build_pip_package.sh

Any other info / logs
I'm only including the relevant part of stdout/stderr. I can include the entire output upon request.

The missing header file: output from build_pip_package.sh

[...]
python3 setup.py bdist --plat-name=linux-armv7l bdist_wheel --plat-name=linux-armv7l
running bdist
running bdist_dumb
running build
running build_py
running build_ext
make: Entering directory '/ptp/tensorflow'
g++ -O3 -DNDEBUG -fPIC  --std=c++11 -fPIC -DGEMMLOWP_ALLOW_SLOW_SCALAR_FALLBACK -pthread -I.

The undeclared object: output from build_pip_package.sh

[...]
+ python3 setup.py bdist --plat-name=linux-armv7l bdist_wheel --plat-name=linux-armv7l
running bdist
running bdist_dumb
running build
running build_py
running build_ext
make: Entering directory '/ptp/tensorflow'
g++ -O3 -DNDEBUG -fPIC  --std=c++11 -fPIC -DGEMMLOWP_ALLOW_SLOW_SCALAR_FALLBACK -pthread -I. -I/ptp/tensorflow/tensorflow/lite/tools/make/../../../../../ -I/ptp/tensorflow/tensorflow/lite/tools/make/../../../../../../ -I/ptp/tensorflow/tensorflow/lite/tools/make/downloads/ -I/ptp/tensorflow/tensorflow/lite/tools/make/downloads/eigen -I/ptp/tensorflow/tensorflow/lite/tools/make/downloads/absl -I/ptp/tensorflow/tensorflow/lite/tools/make/downloads/gemmlowp -I/ptp/tensorflow/tensorflow/lite/tools/make/downloads/neon_2_sse -I/ptp/tensorflow/tensorflow/lite/tools/make/downloads/farmhash/src -I/ptp/tensorflow/tensorflow/lite/tools/make/downloads/flatbuffers/include -I -I/usr/local/include -c tensorflow/lite/experimental/ruy/block_map.cc -o /ptp/tensorflow/tensorflow/lite/tools/make/gen/linux_armv7l/obj/tensorflow/lite/experimental/ruy/block_map.o
tensorflow/lite/experimental/ruy/block_map.cc: In function ‘void ruy::GetBlockByIndex(const ruy::BlockMap&, int, ruy::SidePair<int>*)’:
tensorflow/lite/experimental/ruy/block_map.cc:36:3: error: ‘gemmlowp’ has not been declared
   gemmlowp::ScopedProfilingLabel label("GetBlockByIndex");
   ^~~~~~~~
tensorflow/lite/experimental/ruy/block_map.cc: In function ‘void ruy::MakeBlockMap(int, int, int, int, int, int, int, int, ruy::Path, int, ruy::BlockMap*)’:
tensorflow/lite/experimental/ruy/block_map.cc:273:3: error: ‘gemmlowp’ has not been declared
   gemmlowp::ScopedProfilingLabel label("MakeBlockMap");
   ^~~~~~~~
tensorflow/lite/experimental/ruy/block_map.cc: In function ‘void ruy::GetBlockMatrixCoords(ruy::Side, const ruy::BlockMap&, int, int*, int*)’:
tensorflow/lite/experimental/ruy/block_map.cc:412:3: error: ‘gemmlowp’ has not been declared
   gemmlowp::ScopedProfilingLabel label("GetBlockMatrixCoords");
   ^~~~~~~~
make: *** [tensorflow/lite/tools/make/Makefile:254: /ptp/tensorflow/tensorflow/lite/tools/make/gen/linux_armv7l/obj/tensorflow/lite/experimental/ruy/block_map.o] Error 1
make: Leaving directory '/ptp/tensorflow'
Traceback (most recent call last):
  File "setup.py", line 188, in <module>
    'build_py': CustomBuildPy,
  File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 145, in setup
    return distutils.core.setup(**attrs)
  File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.7/distutils/command/bdist.py", line 143, in run
    self.run_command(cmd_name)
  File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.7/distutils/command/bdist_dumb.py", line 81, in run
    self.run_command('build')
  File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.7/distutils/command/build.py", line 135, in run
    self.run_command(cmd_name)
  File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "setup.py", line 123, in run
    self.run_command('build_ext')
  File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "setup.py", line 115, in run
    make()
  File "setup.py", line 95, in make
    subprocess.check_call(make_args(quiet=False))
  File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', 'SHELL=/bin/bash', 'BUILD_WITH_NNAPI=false', '-C', '/ptp/tensorflow/tensorflow/lite/tools/pip_package/../../../..', '-f', 'tensorflow/lite/tools/make/Makefile', '-j', '1']' returned non-zero exit status 2.

@rdepew could you try it with Docker build?
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/pip_package
make BASE_IMAGE=debian:buster PYTHON=python3 TENSORFLOW_TARGET=rpi docker-build

It has been 14 days with no activity and the awaiting response label was assigned. Is this still an issue?

@rdepew
Any update on this issue please. Thanks!

Let's close this. Please reopen this if you still have the issue.