text:
双Y轴左边无法绘制label

- (void)test1{

    CGFloat chartViewWidth  = self.view.frame.size.width;
    CGFloat chartViewHeight = self.view.frame.size.height;
    _aaChartView = [[AAChartView alloc]init];
    _aaChartView.frame = CGRectMake(100, 30, chartViewWidth*0.5, chartViewHeight*0.5);
    [self.view addSubview:_aaChartView];

    [_aaChartView aa_drawChartWithOptions:[self configureDoubleYAxisChartOptions]];
}

- (AAOptions *)configureDoubleYAxisChartOptions {

    AATitle *aaTitle = AATitle.new.textSet(@"Options绘制 双Y轴混合图");

    AALabels *xlabels = AALabels.new
    .enabledSet(true)//设置X轴是否显示数字
    .formatSet(@"{value:.,0f}月")
    .styleSet(AAStyle.new
              .colorSet(@"#666666")//yAxis Label font color
              .fontSizeSet(@"10px")//yAxis Label font size
              .fontWeightSet(AAChartFontWeightTypeBold)//yAxis Label font weight
              );

    AAXAxis *xAxisOne = AAXAxis.new
    .gridLineWidthSet(@0)
    .lineWidthSet(@2)
    .lineColorSet(@"#666666")
    .minSet(@0)
    .visibleSet(true)
    .startOnTickSet(true)
    .labelsSet(xlabels)
    ;

    AALabels *YlabelOne = AALabels.new
    .enabledSet(true)//设置 y 轴是否显示数字
    .formatSet(@"{value:.,0f}°A")
    .styleSet(AAStyle.new
              .colorSet(@"#ff0000")//yAxis Label font color
              .fontSizeSet(@"15px")//yAxis Label font size
              .fontWeightSet(AAChartFontWeightTypeBold)//yAxis Label font weight
              );

    AAYAxis *yAxisOne = AAYAxis.new
    .gridLineWidthSet(@0)
    .lineWidthSet(@2)
    .lineColorSet(@"#666666")
    .visibleSet(true)
    .labelsSet(YlabelOne.formatSet(@"{value}mm"))
    .titleSet(AATitle.new.textSet(@""))
    .oppositeSet(false)
    ;

    AALabels *YlabelTwo = AALabels.new
    .enabledSet(true)//设置 y 轴是否显示数字
    .formatSet(@"{value:.,0f}°A")
    .styleSet(AAStyle.new
              .colorSet(@"#ff0000")//yAxis Label font color
              .fontSizeSet(@"15px")//yAxis Label font size
              .fontWeightSet(AAChartFontWeightTypeBold)//yAxis Label font weight
              );

    AAYAxis *yAxisTwo = AAYAxis.new
    .gridLineWidthSet(@0)
    .lineWidthSet(@2)
    .lineColorSet(@"#666666")
    .visibleSet(true)
    .labelsSet(YlabelTwo.formatSet(@"{value}mm"))
    .titleSet(AATitle.new.textSet(@""))
    .oppositeSet(true);

    NSArray *aaYAxisArr = @[yAxisOne,// Primary yAxis
                            yAxisTwo // Secondary yAxis
                            ];

    AATooltip *aaTooltip = AATooltip.new
    .enabledSet(true)
    .sharedSet(true)
    ;

    NSArray *aaSeries = @[
                          AASeriesElement.new
                          .nameSet(@"2018")
                          .typeSet(AAChartTypeLine)
                          .yAxisSet(@1)
                          .dataSet(@[@27, @25, @22, @14, @10, @7, @5, @4, @5, @10, @18, @25])
                          .dataLabelsSet(AADataLabels.new.enabledSet(true)),

                          AASeriesElement.new
                          .nameSet(@"2018")
                          .typeSet(AAChartTypeLine)
                          .yAxisSet(@1)
                          .dataSet(@[@0.2, @0.8, @5.7, @11.3, @17.0, @22.0, @24.8, @24.1, @20.1, @14.1, @8.6, @2.5])
                          .dataLabelsSet(AADataLabels.new.enabledSet(true))
                          ];

    AAOptions *aaOptions = AAOptions.new;
    aaOptions.title = aaTitle;
    aaOptions.yAxis = (id)aaYAxisArr;
    aaOptions.xAxis = xAxisOne;
    aaOptions.tooltip = aaTooltip;
    aaOptions.series = aaSeries;

    return aaOptions;
}

已经感觉到这是一个小问题，但是就是找不出来，或者是我对机制了解不够深？

(void)test1{
CGFloat chartViewWidth  = self.view.frame.size.width;
CGFloat chartViewHeight = self.view.frame.size.height;
_aaChartView = [[AAChartView alloc]init];
_aaChartView.frame = CGRectMake(100, 30, chartViewWidth_0.5, chartViewHeight_0.5);
[self.view addSubview:_aaChartView];
[_aaChartView aa_drawChartWithOptions:[self configureDoubleYAxisChartOptions]];
}
(AAOptions *)configureDoubleYAxisChartOptions {
AATitle *aaTitle = AATitle.new.textSet(@"Options绘制 双Y轴混合图");
AALabels *xlabels = AALabels.new
.enabledSet(true)//设置X轴是否显示数字
.formatSet(@"{value:.,0f}月")
.styleSet(AAStyle.new
.colorSet(@"#666666")//yAxis Label font color
.fontSizeSet(@"10px")//yAxis Label font size
.fontWeightSet(AAChartFontWeightTypeBold)//yAxis Label font weight
);
AAXAxis *xAxisOne = AAXAxis.new
.gridLineWidthSet(@0)
.lineWidthSet(@2)
.lineColorSet(@"#666666")
.minSet(@0)
.visibleSet(true)
.startOnTickSet(true)
.labelsSet(xlabels)
;
AALabels *YlabelOne = AALabels.new
.enabledSet(true)//设置 y 轴是否显示数字
.formatSet(@"{value:.,0f}°A")
.styleSet(AAStyle.new
.colorSet(@"#ff0000")//yAxis Label font color
.fontSizeSet(@"15px")//yAxis Label font size
.fontWeightSet(AAChartFontWeightTypeBold)//yAxis Label font weight
);
AAYAxis *yAxisOne = AAYAxis.new
.gridLineWidthSet(@0)
.lineWidthSet(@2)
.lineColorSet(@"#666666")
.visibleSet(true)
.labelsSet(YlabelOne.formatSet(@"{value}mm"))
.titleSet(AATitle.new.textSet(@""))
.oppositeSet(false)
;
AALabels *YlabelTwo = AALabels.new
.enabledSet(true)//设置 y 轴是否显示数字
.formatSet(@"{value:.,0f}°A")
.styleSet(AAStyle.new
.colorSet(@"#ff0000")//yAxis Label font color
.fontSizeSet(@"15px")//yAxis Label font size
.fontWeightSet(AAChartFontWeightTypeBold)//yAxis Label font weight
);
AAYAxis *yAxisTwo = AAYAxis.new
.gridLineWidthSet(@0)
.lineWidthSet(@2)
.lineColorSet(@"#666666")
.visibleSet(true)
.labelsSet(YlabelTwo.formatSet(@"{value}mm"))
.titleSet(AATitle.new.textSet(@""))
.oppositeSet(true);
NSArray *aaYAxisArr = @[yAxisOne,// Primary yAxis
yAxisTwo // Secondary yAxis
];
AATooltip *aaTooltip = AATooltip.new
.enabledSet(true)
.sharedSet(true)
;
NSArray *aaSeries = @[
AASeriesElement.new
.nameSet(@"2018")
.typeSet(AAChartTypeLine)
.yAxisSet(@1)
.dataSet(@[@27, @25, @22, @14, @10, @7, @5, @4, @5, @10, @18, @25])
.dataLabelsSet(AADataLabels.new.enabledSet(true)),                    AASeriesElement.new
                    .nameSet(@"2018")
                    .typeSet(AAChartTypeLine)
                    .yAxisSet(@1)
                    .dataSet(@[@0.2, @0.8, @5.7, @11.3, @17.0, @22.0, @24.8, @24.1, @20.1, @14.1, @8.6, @2.5])
                    .dataLabelsSet(AADataLabels.new.enabledSet(true))
                    ];

AAOptions *aaOptions = AAOptions.new;
aaOptions.title = aaTitle;
aaOptions.yAxis = (id)aaYAxisArr;
aaOptions.xAxis = xAxisOne;
aaOptions.tooltip = aaTooltip;
aaOptions.series = aaSeries;
return aaOptions;
}
已经感觉到这是一个小问题，但是就是找不出来，或者是我对机制了解不够深？

将
    NSArray *aaSeries = @[
                          AASeriesElement.new
                          .nameSet(@"2018")
                          .typeSet(AAChartTypeLine)
                          .yAxisSet(@1hella
)
                          .dataSet(@[@27, @25, @22, @14, @10, @7, @5, @4, @5, @10, @18, @25])
                          .dataLabelsSet(AADataLabels.new.enabledSet(true)),

                          AASeriesElement.new
                          .nameSet(@"2018")
                          .typeSet(AAChartTypeLine)
                          .yAxisSet(@1)
                          .dataSet(@[@0.2, @0.8, @5.7, @11.3, @17.0, @22.0, @24.8, @24.1, @20.1, @14.1, @8.6, @2.5])
                          .dataLabelsSet(AADataLabels.new.enabledSet(true))
                          ];

改为
    NSArray *aaSeries = @[
                          AASeriesElement.new
                          .nameSet(@"2018")
                          .typeSet(AAChartTypeLine)
                          .yAxisSet(@0)
                          .dataSet(@[@27, @25, @22, @14, @10, @7, @5, @4, @5, @10, @18, @25])
                          .dataLabelsSet(AADataLabels.new.enabledSet(true)),

                          AASeriesElement.new
                          .nameSet(@"2018")
                          .typeSet(AAChartTypeLine)
                          .yAxisSet(@1)
                          .dataSet(@[@0.2, @0.8, @5.7, @11.3, @17.0, @22.0, @24.8, @24.1, @20.1, @14.1, @8.6, @2.5])
                          .dataLabelsSet(AADataLabels.new.enabledSet(true))
                          ];

因为AASeriesElement的属性yAxis相当于是索引,你将两个AASeriesElement都设置为1就导致错乱了

X轴和Y轴的刻度线设置的参数是什么？比如控制是否显示刻度线，设置刻度线参数之类的。

 AAYAxis *aaYAxis = AAYAxis.new
    .labelsSet(AALabels.new
               .enabledSet(aaChartModel.yAxisLabelsEnabled)//设置 y 轴是否显示数字
               .styleSet(AAStyle.new
                         .colorSet(aaChartModel.yAxisLabelsFontColor)//yAxis Label font color
                         .fontSizeSet(AAFontSizeFormat(aaChartModel.yAxisLabelsFontSize))//yAxis Label font size
                         .fontWeightSet(aaChartModel.yAxisLabelsFontWeight)//yAxis Label font weight
                         )
               .formatSet(@"{value:.,0f}")//让y轴的值完整显示 而不是100000显示为100k
               )
    .minSet(aaChartModel.yAxisMin)//设置 y 轴最小值,最小值等于零就不能显示负值了
    .maxSet(aaChartModel.yAxisMax)//y轴最大值
    .tickPositionsSet(aaChartModel.yAxisTickPositions)//自定义Y轴坐标
    .allowDecimalsSet(aaChartModel.yAxisAllowDecimals)//是否允许显示小数
    .plotLinesSet(aaChartModel.yAxisPlotLines) //标示线设置
    .reversedSet(aaChartModel.yAxisReversed)
    .gridLineWidthSet(aaChartModel.yAxisGridLineWidth)//y轴网格线宽度
    .titleSet(AATitle.new.textSet(aaChartModel.yAxisTitle))//y 轴标题
    .lineWidthSet(aaChartModel.yAxisLineWidth)//设置 y轴轴线的宽度,为0即是隐藏 y轴轴线
    .visibleSet(aaChartModel.yAxisVisible)
    .tickIntervalSet(aaChartModel.yAxisTickInterval);

    if ([aaChartModel.yAxisCrosshairWidth floatValue]>0) {
        aaYAxis.crosshairSet(AACrosshair.new
                             .widthSet(aaChartModel.yAxisCrosshairWidth)
                             .colorSet(aaChartModel.yAxisCrosshairColor)
                             .dashStyleSet(aaChartModel.yAxisCrosshairDashStyleType)
                             );
    }

你参照着AAOptionsConstructor.m文件里面的这部分内容来写就行了.

回复还即时，非常感谢！

还有一个就是，图表背景如何替换成自定义的图片？

至于你说的刻度线相关的细致配置,highCharts官方文档链接在这里 https://api.hcharts.cn/highcharts#yAxis.tickAmount
目前我还没有添加这些较多的有关于刻度线的属性.如有需要,你可以自行将这些属性添加到AAYAxis类文件当中.或者我也可以在稍晚点的时间将这些属性添加完成

plotBackgroundImage: String
指定绘图区背景图片的地址。如果需要设置整个图表的背景，请通过 CSS 来给容器元素（div）设置背景图。另外如果需要在导出图片中包含这个背景图，要求这个地址是公网可以访问的地址（包含可以访问且是绝对路径）。
https://api.hcharts.cn/highcharts#chart.plotBackgroundImage
在AAChartKit中的设置如下
    aaOptions.chart.plotBackgroundImage = @"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2859216016,2109779587&fm=27&gp=0.jpg";

AAChartKit的使用AAOptions绘图的示例中有这个相关示例

当然你也可以设置AAChartView背景色为透明色,然后在底部添加一张图片,当然这种方式可能不太官方😅

第一个问题：上面的设置刻度线的参数我没有找到具体是哪个？现在我想先把刻度线调出来，具体详细设置后面再说，能否知道你说的你稍晚点将这些属性添加完成，大概是多久呢？嘿嘿。
第二个问题：刚才那个图片我直接复制你贴出的代码，发现并没有任何变化，图片没有出来，下面是我的代码：
AAOptions *aaOptions = AAOptions.new;
aaOptions.title = aaTitle;
aaOptions.yAxis = (id)aaYAxisArr;
aaOptions.xAxis = xAxisOne;
aaOptions.tooltip = aaTooltip;
aaOptions.chart.plotBackgroundImage = @"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2859216016,2109779587&fm=27&gp=0.jpg";
aaOptions.series = aaSeries;
第三个问题：是否可以添加你的微信或者qq呢？我的qq是：782873256；非常感谢！

aaOptions.chart = AAChart.new.plotBackgroundImageSet(@"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2859216016,2109779587&fm=27&gp=0.jpg");

aaOptions.chart = AAChart.new.plotBackgroundImageSet(@"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2859216016,2109779587&fm=27&gp=0.jpg");

这句代码没有起作用?

哦哦，你给我的背景图已经出现了，但是因为不能满足项目需求，现在想把背景色设置成透明色，然后在底部加一张图片，现在的问题是无法把背景设置成透明。不起作用。

这是我想要实现的效果。

刚才看了一下层次图，发现你的这个参数设置的是最底层的View的背景色？

 //设置 AAChartView 的背景色是否为透明
    self.aaChartView.isClearBackgroundColor = YES;

设置AAChartView为透明色这一句代码应该就够了,demo中的AAChartView其实就是透明色

AAChartView内部实际上是一个UIView上添加了WKWebView,你直接设置
aaChartView.backgroundColor = [UIColor clearColor];

肯定是不行的

   //设置 AAChartView 的背景色是否为透明
    self.aaChartView.isClearBackgroundColor = YES;

上面这句代码实际上执行的是下面👇这句代码(我重写了isClearBackgroundColor的setter方法)
- (void)setIsClearBackgroundColor:(BOOL)isClearBackgroundColor {
    _isClearBackgroundColor = isClearBackgroundColor;
    if (_isClearBackgroundColor == YES) {
        self.backgroundColor = [UIColor clearColor];
        if (AASYSTEM_VERSION >= 9.0) {
            [_wkWebView setBackgroundColor:[UIColor clearColor]];
            [_wkWebView setOpaque:NO];
        } else {
            [_uiWebView setBackgroundColor:[UIColor clearColor]];
            [_uiWebView setOpaque:NO];
        }
    }
}

同时还牵涉到了这部分代码
  if (self.isClearBackgroundColor == YES) {
        options.chart.backgroundColor = @"rgba(0,0,0,0)";
    }

所以说,设置AAChartView一个小小的透明背景色,实际上牵涉到的内容比你想象的要多

   //设置 AAChartView 的背景色是否为透明
    self.aaChartView.isClearBackgroundColor = YES;

也就是说上面👆这句总共做了三件事:

设置AAChartView(继承自UIView)本身背景色为透明色

 self.backgroundColor = [UIColor clearColor];

设置WebView背景色为透明色

  if (AASYSTEM_VERSION >= 9.0) {
            [_wkWebView setBackgroundColor:[UIColor clearColor]];
            [_wkWebView setOpaque:NO];
        } else {
            [_uiWebView setBackgroundColor:[UIColor clearColor]];
            [_uiWebView setOpaque:NO];
        }

设置WebView中的内容 div 为透明色

        options.chart.backgroundColor = @"rgba(0,0,0,0)";

嗯嗯，设置成功了，非常感谢耐心详细的解答，这个问题已经解决了，已经设置背景图为透明色了，但是这个参数确实容易让人误解，给人的感觉是设置了，并没有起作用。嘿嘿，，，

还有一个问题：就是图表下面的name这个标题说明是否可以设置去掉？

但是这个参数确实容易让人误解，给人的感觉是设置了，并没有起作用。嘿嘿，，，

如有兴趣,欢迎提pull Request🙂

还有一个问题：就是图表下面的name这个标题说明是否可以设置去掉？

设置nameSet(@" ")而不是nameSet(@"")
也就是说设置name为一个是空格的字符串而不是一个空字符串

如果想要将图例(可点按的小圆点)也一并隐藏,直接设置AASeriesElement的showInLegend = true
AAPropStatementAndPropSetFuncStatement(assign, AASeriesElement, BOOL      , showInLegend) //Whether to display this particular series or series type in the legend. The default value is true for standalone series, false for linked series. 默认是：true.

X轴设置categories后，出现如下问题。

(AAOptions *)configureTheAAOptionsOfAreaChart {
AAChart *aaChart = AAChart.new.typeSet(AAChartTypeArea);
AATitle *aaTitle = AATitle.new.textSet(@" ");
AASubtitle *aaSubtitle = AASubtitle.new
.textSet(@" ")
.alignSet(AAChartTitleAlignTypeLeft);
//X轴
AALabels *xlabels = AALabels.new
.enabledSet(true)//设置X轴是否显示数字
.formatSet(@"{value:.,0f}")
.styleSet(AAStyle.new
.colorSet(@"#ffffff")//yAxis Label font color
.fontSizeSet(@"15px")//yAxis Label font size
.fontWeightSet(AAChartFontWeightTypeRegular)//yAxis Label font weight
);
//X轴
AAXAxis *aaXAxis = AAXAxis.new
.startOnTickSet(true)
.gridLineWidthSet(@0)
.lineWidthSet(@2)
.lineColorSet(@"#ffffff")
.minSet(@0)
.labelsSet(xlabels)
.visibleSet(true)
.categoriesSet(@[@"0", @"10", @"20", @"30", @"40", @"50", @"60"])
;
//Y轴
AAYAxis *aaYAXis = AAYAxis.new
.visibleSet(true)
.lineWidthSet(@2)
.lineColorSet(@"#ffffff")
.gridLineWidthSet(@0)
.tickPositionsSet(@[@(0),@(50),@(50), @(100), @(150), @(200),@(250)])
;
AAYAxis *aaYAXisTwo = AAYAxis.new
.visibleSet(false)
.lineWidthSet(@0)
.lineColorSet(@"#ffffff")
.gridLineWidthSet(@0)
.tickPositionsSet(@[@(0),@(50),@(50), @(100), @(150), @(200),@(250)])
.oppositeSet(YES)
;
NSArray * aaYaxisArray = @[aaYAXis,aaYAXisTwo];
//浮窗
AATooltip *aaTooltip = AATooltip.new.enabledSet(true).valueSuffixSet(@"xB0C");
//图例
AALegend *aaLegend = AALegend.new
.enabledSet(true)//是否显示图例。如果不显示，下面的设置就没用。
.alignSet(AALegendAlignTypeRight)
.layoutSet(AALegendLayoutTypeVertical)
.verticalAlignSet(AALegendVerticalAlignTypeMiddle)
.itemMarginTopSet(@10)
;
NSArray *aaSeries = @[
AASeriesElement.new
.nameSet(@"2022")
.colorSet(@"#BC2B44")
.markerSet(AAMarker.new.radiusSet(@0))
.lineWidthSet(@0)
.yAxisSet(@1)
.dataSet(@[@250.0, @250.0, @250.0, @250.0, @250.0, @250.0, @250.0]),
AASeriesElement.new
.nameSet(@"2021")
.colorSet(@"#EC6444")
.markerSet(AAMarker.new.radiusSet(@0))
.lineWidthSet(@0)
.yAxisSet(@1)
.dataSet(@[@225.0, @225.0, @225.0, @225.0, @225.0, @225.0, @225.0]),
AASeriesElement.new
.nameSet(@"2020")
.colorSet(@"#f19742")
.markerSet(AAMarker.new.radiusSet(@0))
.lineWidthSet(@0)
.yAxisSet(@1)
.dataSet(@[@200.0, @200.0, @200.0, @200.0, @200.0, @200.0, @200.0]),
AASeriesElement.new
.nameSet(@"2019")
.colorSet(@"#f3da60")
.markerSet(AAMarker.new.radiusSet(@0))
.lineWidthSet(@0)
.yAxisSet(@1)
.dataSet(@[@175.0, @175.0, @175.0, @175.0, @175.0, @175.0, @175.0]),
AASeriesElement.new
.nameSet(@"2018")
.colorSet(@"#9bd040")
.markerSet(AAMarker.new.radiusSet(@0))
.lineWidthSet(@0)
.yAxisSet(@1)
.dataSet(@[@150.0, @150.0, @150.0, @150.0, @150.0, @150.0, @150.0]),
AASeriesElement.new
.nameSet(@"2017")
.colorSet(@"#acf08f")
.markerSet(AAMarker.new.radiusSet(@0))//折线原点的半径，这里直接取消折线原点
.lineWidthSet(@0)
.yAxisSet(@1)
.dataSet(@[@110.0, @110.0, @110.0, @110.0, @110.0, @110.0, @110.0]),
AASeriesElement.new
.typeSet(AAChartTypeLine)
.nameSet(@"2017")
.colorSet(@"#ffffff")
.markerSet(AAMarker.new.radiusSet(@0))
.yAxisSet(@0)
.dataSet(@[@86.0, @91.0, @102.0, @110.0, @134.0, @158.0, @225.0]),
];
AAOptions *aaOptions = AAOptions.new;
aaOptions.chart = aaChart;
aaOptions.title = aaTitle;
aaOptions.subtitle = aaSubtitle;
aaOptions.xAxis = aaXAxis;
aaOptions.yAxis = (id)aaYaxisArray;
aaOptions.tooltip = aaTooltip;
aaOptions.legend = aaLegend;
aaOptions.series = aaSeries;
return aaOptions;
}

你使用多组折线填充图充当背景,来实现设计中的数值区域颜色分块渐变的需求,虽然的确是解决问题的办法,但却不是highCharts设计的初衷.
传送门: https://jshare.com.cn/demos/hhhhxD ,这里的在线示例中显示,Y轴的plotBands属性似乎才是实现此需求的官方指定的最佳方案(虽然代码实际上写起来也肯定是又臭又长🤣)

另外我最近比较忙,你提出的另外的几点问题我恐怕暂时不能及时解决,至少得留待这个周末了

好的，好的，非常感谢，等你周末的消息哈，我和两天已在看，但是一直没有找到原因。等你周末吧。

这个问题是什么原因呢？现在快交工了，，，😂🤣

authors: AAChartModel tipshot

repo: AAChartModel/AAChartKit


text:
Add Kernel32 and User32 methods, and tests #329

I added some methods (including those required to test #329) and added a test to reproduce #329. But the test passed so I don't think we actually have an issue, unless @AkariAkaori can help point out what is wrong in my repro.
Closes #329

I suspect that the exact error @AkariAkaori has to be platform related (Some OS version might setlasterror on success, other not. So we should fix our GetWindowText implementation to call SetLastError (And cross fingers that the framework doesn't interrupt our tread to run some GC code that change last error, no idea if such code exists, we could block that by being in a CER)
CoreClr did the wise thing here and guarantee that SetLastError is always called on PInvoke having SetLastError=true https://github.com/dotnet/coreclr/pull/614

has to be platform related (Some OS version might setlasterror on success, other not.

Yes, that occurred to me as well. It could be .NET Framework that fixed this too (an equivalent fix that CoreCLR made). If @AkariAkaori can specify what version of .NET Framework is installed and what build of Windows, I'd be willing to investigate more. But I don't want to fix a problem that I can't repro since my fix may or may not be effective.
@vbfox I've never written a CER in C# (unless you count locks). What construct would protect against interruptions? BTW, as the last error is thread-local, I imagine as long as I don't allocate memory, it's impossible (I think?) for the CLR to actually do work on my thread so I think(?) my LastError is safe if I were to set it to zero.

I've only used CER in a few specific cases and i'm far from knowledgeable in the domain but yes they protect against all interruptions by the runtime as long as you respect a big amount of constraints
RuntimeHelpers.PrepareConstrainedRegions();
try { }
finally
{
    // Code Here won't be interruptible
}

I agree with you that it should be an impossible situation in the current CRL implementations. Especially as I don't think that the GC really uses code that set the win32 last error.
AFAIK nothing that currently exists on the CLR run code on random threads except for the GC and none of the current algorithm run code on a thread that is not allocating.
I was pointing at the possibility because while I think that if we can find a case were it's provably broken we should fix it by adding a SetLastError the correct fix is to do it in the runtime like coreclr did as it's the only place that can be sure that the call is really the last thing done before calling the PInvoked method.

And cross fingers that the framework doesn't interrupt our tread to run some GC code that change last error, no idea if such code exists, we could block that by being in a CER

Thinking about this more, I see no reason to worry about using a CER. That's why the Framework gives us Marshal.GetLastWin32Error() after all (it ensures that even if the CLR interrupts and changes GetLastError's result, you still get the last one that your code would care about on that thread. And that's the method we're using.
So IMO it's still a debate whether we need to call SetLastError(ERROR_SUCCESS) before calling GetWindowTextLength since if a version of .NET or Windows didn't call that for us when returning 0 length I agree that would be an issue. But I don't like fixing bugs that don't repro. So unless @AkariAkaori can suggest an OS or .NET version to test on to repro, I'll close that bug as not repro.

Thinking about this more, I see no reason to worry about using a CER. That's why the Framework gives us Marshal.GetLastWin32Error() after all (it ensures that even if the CLR interrupts and changes GetLastError's result, you still get the last one that your code would care about on that thread. And that's the method we're using.

My point was more about the time between our hypothetical call to SetLastError and the next pinvoke. But your second point stand fixing bugs that we can't repro is problematic :)

Managed to reproduce it here: https://streamable.com/gdkio
The magic number is a one of the windows with blank text

source: gharchive/pull-request

authors: AArnott AkariAkaori vbfox

repo: AArnott/pinvoke

license: mit

license_type: permissive

license_source: bigquery


text:
2024.03.1 release is broken

access-om2 2024.03.1 is built with hdf5 1.14.3 which contains a bug that prevents ACCESS-OM2 from running.
The issue is fixed in hdf5 1.14.4, but this version is not yet available in the spack package.
What's the right way forward here? Revert to hdf5 1.14.2 for now?
Note, this issue also affects two ACCESS-OM2-BGC releases - see https://github.com/ACCESS-NRI/ACCESS-OM2-BGC/issues/13
Tasks

[x] Remove access-om2 2024.03.1 as a Release (but keep the tag for transparency)
[ ] Link PR for 2024.03.2 that adresses the above

Thanks @dougiesquire - removing the release for now, and will link a PR that addresses the issue

source: gharchive/issue

authors: CodeGat dougiesquire

license_source: github-api


text:
Support taproot addresses and rotation

🚧  This PR is a work-in-progress. It depends on updates on the secp256k1 library (see link for details) which is not expected to arrive soon. So this PR will stay in draft for some time. Most of the wording is a WIP.
Support for taproot addresses
Phoenix now shows a taproot address by default for swap-ins (on-chain deposits to Phoenix). Taproot addresses are more private (observers won't know funds sent there are for LN channels) and are cheaper (~15% less fee, and once channels also support taproot, it could be up to 30% less expensive in total).

Backward compat with legacy addresses
Phoenix will still be able to swap funds sent on the legacy address, even if it's not the preferred way. User can also switch back to the legacy address for deposits from wallets/services that don't support taproot.

Address rotation
Taproot addresses are rotated, which also improves privacy besides the taproot features - see https://github.com/ACINQ/lightning-kmp/pull/584 for details.
It means that Phoenix will synchronise its view of the swap-in wallet at startup to find the last unused address, and avoid address reuse. This synchronisation can take time (dozens of seconds if many addresses), during which the UI should still display an address (for good UX).
@robbiehanson To do so, the last known unused index should be stored in the preferences, and used at startup to provide an address to the UI:
keyManager.swapInOnChainWallet.getSwapInProtocol(index).address(chain)

Then listen to Peer.swapInWallet.swapInAddressFlow and use that address at collect (which should be the same address as calculated before, unless a payment was made while the app was off).
Show used addresses
The user can check his addresses in Settings > Wallet info > Swap addresses.

These addresses are exposed in Peer.swapInWallet.wallet.walletStateFlow. Note that the legacy address is contained in that flow (using a AddressMeta.Single meta).
Also, this flow only exposes the adresses that have been used, + the first unused address. It does not list other unused addresses.

Note that this PR will have to be rebased on kotlin 1.9.

side-note: The phoenix-legacy app cannot compute swap-in addresses for the new taproot-based protocol, but it should be easy to implement if needed:

updatebitcoin-lib 0.18.3 and add bitcoin-kmp 0.17.0 and secp256k1-kmp 0.14.0
update eclair-core  v0.4.23-android-phoenix and add a method to compute new swap-in addresses

This will make the old version of eclair-core used by the legacy app depend on kotlin 1.9 but I understand that it is not a problem as the legacy app is already using kotlin 1.9.

repo: ACINQ/phoenix


text:
Enhancement: Add TabBar to all the widgets

TabBar needs to be added to every widget present in the list. There should be 2 tabs, one for description of the widget and other for the implementation of the widget(which is already present).
For example, when you tap on column widget, the new page should have two tabs, one named 'Description' which describes what the column widget does and the other named 'Implementation' which shows the implementation of the widget. Since the implementation already exists, the same code needs to be added to this tab. This is supposed to be done for all the widgets present.
Please share screenshots of the same..

Hey @AryanKhubchandani , please assign this issue to me!

Hey @AryanKhubchandani , please assign this issue to me!

Sure, Good Luck!

repo: ACM-VIT/fludget

license: MIT


text:
Security: Upgrade aiohttp to version 3.7.4 or later

See details from alert:
https://github.com/AD-SDL/adc-rdm-sdk/security/dependabot/requirements.txt/aiohttp/open

I marked the alert as "Risk is tolerable to this project".
The alert states that it is specifically related to maliciously crafted urls, but we are the ones defining the URLs used for this project so it should not affect us for now.

authors: aavarca laaraujo-dnt

repo: AD-SDL/adc-rdm-sdk


text:
Finish rating summary page

Plot for counts of objects for users in Echarts
Plot of counts of user's ratings per classification
Downloadable CSV of ratings, filtering by project, observation ID, user, etc.

Completed in #29


text:
Project description

Project requirements for this phase:
Group Project
This is the first part of the group assignment.  This week, you will be working with your group members to decide what kind of site to build along with some initial designs (more on that below).  You can build any kind of website you want, for example a mock restaurant menu/order site or a shopping site.  You can use the materials covered in class along with any other CSS frameworks that you might have learned on your own. For the API service, plan on using ExpressJS (I will cover it in class on 4/3).  For now assume that any data needed for your website will be provided by the API service.
Grading Criteria for the entire project
Does the site do what the initial submission summary says?
Does the site resemble the wireframes handed in?
Are the styles written cleanly and non-redundant?
Does the JavaScript work properly and without errors?
Does the API service retrieve/modify data as necessary? (API will be covered in 4/3 lecture)

Once you have decided on what kind of site you will be building, you will be creating some wireframes. If you are not experienced with wireframes, please read the article at https://blog.hubspot.com/website/website-wireframe - There are many free wireframing tools available, you may use anything you wish; one of the free ones is https://app.diagrams.net/ ; you can save your work to Google drive or other cloud providers using this tool.
Submission for 4/3:
I need one person from the group to email me one pdf file which contains the following:
A brief summary of what your website is going to be (Use as much words as you need to clearly explain your idea).
Wireframe of the your site.
Make sure to include all the group member names on the 1st page of the pdf file.
Make sure to include "SEIS-622" in the subject.

Description
Currently WIP
An app to rate individual coffee drinks at coffee shops that you visit, rather than rating the coffee shop itself.
Potential Features
Ability to add your drink, coffee location, rating and comment
    Perhaps we could use Google API to find & add Coffee shop (or just have fake data)
    If time allows, we could add option to upload a picture
Edit Ratings added
Delete Ratings added
Stretch Goals
    Search for ratings based on location, coffee shop, types of coffee, etc.
    Create User Profiles
        Ability to search for your own ratings added
        Limit edits & deletes to your own ratings

Link to document with project summary: https://uofstthomasmn-my.sharepoint.com/:w:/r/personal/allh2951_stthomas_edu/Documents/622 Group Project/Group Project Part 1.docx?d=w67863679bab64e8ba5e7389082859df2&csf=1&web=1&e=yjXULV

authors: ADWrobo BetsyRowley

repo: ADWrobo/coffee-ranking-platform


text:
Flyin Donut: Flyin upside down

Currently, when flying inverted, your motion is backwards from your point of view. It would be fun to be able to fly upside down but forwards!
Not sure whether this counts as a feature, or a minor bug

@cnlohr fixed this (it was a bug, not intended behavior) in bryce-qa


text:
CUDA out of memory. Tried to allocate 91.71 GiB. GPU

Is it not possible to transcribe long audio files, around ~3 hours? I am trying to transcribe the 3-hour audio to Hindi, but it uses huge memory.
import torch
import nemo.collections.asr as nemo_asr

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
nm_model = nemo_asr.models.EncDecCTCModel.from_pretrained('ai4bharat/indicconformer_stt_hi_hybrid_rnnt_large')
nm_model.freeze() # inference mode
nm_model = nm_model.to(device)

nm_model.cur_decoder = 'rnnt'
text = nm_model.transcribe(audio=str(processed_audio_file), batch_size=1, language_id='hi')[0]

The memory usage is huuuuge.

You can try two things:

In the model config, set the self_attention_model in NeMo to local, and set a smaller local_attention_window.
Chunk the audio into multiple segments using Silero VAD, run inference on the individual chunks, and finally merge the output transcripts.

The second option might give a better result since the model has been trained on 5 - 25 second audio chunks, so it would most accurate on audio files having a duration within that range.

Fantastic. I am going ahead with the audio chunk route. Besides, is it possible to turn off tqdm logging while transcribing? I have my own progress for chunks using tqdm.


text:
ModuleNotFoundError: No module named 'inference'

Throwing error
from indicTrans.inference.engine import Model
showing
ModuleNotFoundError                       Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_1140/1581464475.py in
----> 1 from indicTrans.inference.engine import Model
D:\datascienceprojects\project-new\indicTrans\inference\engine.py in
13 from indicnlp.tokenize import sentence_tokenize
14
---> 15 from inference.custom_interactive import Translator
16
17
ModuleNotFoundError: No module named 'inference'

Throwing error
from indicTrans.inference.engine import Model
showing
ModuleNotFoundError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_1140/1581464475.py in ----> 1 from indicTrans.inference.engine import Model
D:\datascienceprojects\project-new\indicTrans\inference\engine.py in 13 from indicnlp.tokenize import sentence_tokenize 14 ---> 15 from inference.custom_interactive import Translator 16 17
ModuleNotFoundError: No module named 'inference'

Try importing after running %cd indicTrans

authors: MdYeasinSamadArnob eldhoittangeorge


text:
API 调用出现 exception

api 调用出错。
需要将 exception 封装为  api 的错误返回，而不是服务器的缺省 exception html
The server encountered an internal error that prevented it from fulfilling this request.

exception
java.lang.NullPointerException
	java.net.URLDecoder.decode(URLDecoder.java:136)
	com.qq.GetInfo.doPost(GetInfo.java:60)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

重现方法：不传入attachment
curl -X POST -H "sender:346786495@qq.com" -H "reciever:wnbupt@qq.com" -H "sendtime:2015-12-16 10:43" -H "subject:测试demo" -H "body:快塞给我一封邮件吧！" http://111.207.243.70:8088/IbotInfo/GetInfo

get the problem and try to solve it

什么时候能修复？
现在你用 header 传入 body ，body一大了，就很容易触发 header 的 size limit 。

authors: wnbupt zixia

repo: AKAMobi/ibot


text:
Improving the UI

There can be several improvements with the UI to make it more engaging to the users.
Cards and the color combinations can be changed and made more attractive. Currently the UI looks very dull and non-interactive.
Kindly assign this issue to me. I work as a web designer and can work on enhancing the UI nicely

Hi, @km1610 , you may work on this and please refer to the Contribution guidelines on the readme once.
All the best!

Closing this because of no response or pr from your side.


text:
rodgersxy

Description:
footer section

@ALX-SE-Algorithmia/code-reviewing-team
Changes Made:
Provide a detailed overview of the code changes made to introduce this implemtation, along with any relevant code snippets or files.
Related Issue:
Fixes #[ISSUE_NUMBER]
Screenshots (if applicable):
Attach screenshots, if applicable, to showcase the newly implemented feature or bug fix.

Hello @rodgersxy.
Thank you so much for your contribution, it is phenomenal.
There's some news to be passed through:

We need to implement the footer in the Figma file to aid our development.
Also, we will need to touch up the colors too.

Once again, thank you so much again.
Your PR will be used in the development of the Figma file 👍.

Hi @rodgersxy.
Your code is being used for the implementation of the footer.
Thank you, but this PR will be closed.


text:
Add Async Support on the CosumeOf Interface

I would like to see support for the async and await pattern thru the layers up to ConsumOf interface and its implementation. I am running with such in with one of my client.

That is a fine idea and I think I looked into that initially, but I have not implemented it because it involved significant amount of work. I remember I have tried it but got blocked by some of the async api and could not resolve that in short enough time, so I dropped it.
In principle, yes, it'll be great. In practice I'm very busy just now and no time to implement it in any forceible future.

@kdcllc  I had a quick-stub at async functionality - available in async branch. Unfortunately async turtles all the way down. See this test. A lot of issues here:

A lot of breaking changes - need async methods on interfaces ISagaMediator, ISagaFactory.
Most likely will need IAsyncSagaMessage and IAsyncInitiatingSagaMessage to be sure the correct method is called with appropriate await
Possible wad of other changes that I don't see just now.

Basically will have to rewrite the whole thing from scratch and double the public API surface. As I suspected before this is a lot of work and time that I don't have just now.

@trailmax,
That what I thought. I do not have time at the moment as well, so I have wrap the code in the async tasks for now. Thanks!

authors: kdcllc trailmax

repo: AMVSoftware/NSaga


text:
Dimmer won't go to 100% anymore

Hello,
I had to install the latest RC to work with my new smart dimmers. Everything works great, however when I have my dimmers at 100% in Homekit, the actual light output is 26% (according to the Smart Life app. I can control the dimmers perfectly from Smart Life app and the actually switches themselves. Any ideas to why this is happening or if anyone else is having the same problem? Thanks so much for the great software!

So I found by adding the following to each dimmer in my config.json file, I can get the lights to reach 100% again:
"scaleBrightness": "1000"
However, now the dimming percentage numbers are not correct in the home app, they always say 100% regardless of the level...

Was able to look into this further and it looks like replacing the convertBrightnessFromTuyaToHomeKit function with below fixes the issue and the dimming percentage appears correct in the Apple Home app:
convertBrightnessFromTuyaToHomeKit(value) {
const min = 150;
const scale = 1000;
return Math.round((99 * (value || 0) - 100 * min + scale) / (scale - min));
 }
It looks like this.device.context.minBrightness || 27 and this.device.context.scaleBrightness || 255; in the convertBrightnessFromTuyaToHomeKit are not reading in the values from the config.json file, not sure if it is hardcoded in somewhere else for this function...

Curious, does the percentage in Home match the Tuya app between changes? I'm using RGBTW bulbs but I have a similar issue. When the scale is set to 1000 (HSB color mode) the bulbs brightness is accurate but the percentage value resets to 0% after some time - I'm guessing when the plugin refreshes the value from Tuya it gets something unknown in response.

Curious, does the percentage in Home match the Tuya app between changes? I'm using RGBTW bulbs but I have a similar issue. When the scale is set to 1000 (HSB color mode) the bulbs brightness is accurate but the percentage value resets to 0% (actual bulb brightness doesn't change) after some time - I'm guessing when the plugin refreshes the value from Tuya it gets something unknown in response.

They don't match exactly between the Tuya app and the Home app. For example, when my lights are at 70% in the Home app, SmartLife says 74%. I had a similar issue, where my brightness wouldn't change physically, but in the Home app it would always reset back to 100%. I fixed this by changing the function to what is in my third comment. Basically hardcoding the min and scale variables.

authors: chadjmorgan digitalec

repo: AMoo-Miki/homebridge-tuya-lan


text:
Added Home Page Design

closes https://github.com/AOSP-NIT-Surat/Bookstore-Frontend-web/issues/5

What kind of change does this PR introduce? (check at least one)

[ ] Bug Fix
[x] New Feature
[x] Code style update
[ ] Refactor
[x] Build-related changes
[ ] Other, please describe below:

Checklist

[ ] I have read the CONTRIBUTING Guidelines.
[ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)

Any Other information:

@Hetu1107 please resolve all the conflicts

repo: AOSP-NIT-Surat/Bookstore-Frontend-web


text:
isDisabled does not work a la isLoading.

Title says it all.

Just released https://github.com/APSL/react-native-button/releases/tag/v2.2.0 :shipit:. Should work right now.
Let me know if I can help you with anything else :)

authors: alvaromb johanatan

repo: APSL/react-native-button


text:
react-native 0.63 scrollIntoView of undefined

When I run scrollToEnd in version 0.63, I get the error scrollIntoView of undefined.
also now scroll.props.scrollToEnd gives an error. Because there are no props.
this.scroll.props.scrollToEnd(); // Change to this.scroll.scrollToEnd();

Warning:
TypeError: Cannot read property 'scrollIntoView' of undefined

this is a warning But it doesn't scroll down.
Thanks.

Hi,
Any updates on this ?
Thanks!!

@Foskas , after working around, here is my solution how can call these functions scrollToEnd, scrollIntoView,.. for functional component
let scrollProps;

<KeyboardAwareScrollView
      innerRef={(ref) => {
        scrollProps = ref._internalFiberInstanceHandleDEV.memoizedProps;
      }}
/>

const _scrollToInput = (reactNode: ReactNode) => {
   // 200 is extra height after scrolling to component
    scrollProps.scrollToFocusedInput(reactNode, 200);
  };

<TextInput  onFocus={(event) => _scrollToInput(findNodeHandle(event.target))} />

@nhatndm I was able to achieve this in more accurate way:
<KeyboardAwareScrollView
      innerRef={(ref) => { this.scrollView = ref.getScrollResponder(); }}
/>

const _scrollToInput = (reactNode: ReactNode) => {
     this.scrollView.props.scrollToFocusedInput(inputNode, 200);
};

@olegmilan
I modified this to allow for instance removal:
<KeyboardAwareScrollView
      innerRef={(ref) => { this.scrollView = ref ? ref.getScrollResponder() : null; }}
/>

authors: Foskas arstropica nhatndm olegmilan yasaricli


text:
got segmentation fault in CreateNetworkFromBinaryFile(programOptions.modelPath.c_str()

I got segmentation fault when running the following code.
using IParser = armnnTfLiteParser::ITfLiteParser;
auto armnnparser(IParser::Create());
armnn::INetworkPtr network = armnnparser->CreateNetworkFromBinaryFile(programOptions.modelPath.c_str());

I use TFLite model converted from TF2. Is this the possible cause for the segmentation fault?

Hi @ivs-pychen
Tf2 is not fully tested yet. But we don't expect any problems with it.
What kind of model are you running? And could you post the full error message?
Also have you tried your code with a tf.1.15 model or with a different tf2 model?
Jan

I run the Mobilenetv2 ssd. And I just got the Segmentation fault, no other error messages.
I tried other model from tensorflow lite hosted models and tensorflow lite object detection. And both of them can import the model.
Does the tf1.15 can be fully supported by Arm NN?

Alright, I think I know what is going on. You have build acl in release. To make the code more efficient a lot of IsSupported tests are skipped in the release build. If you rebuild acl in debug mode you'll get more informative error messages.
In mobilenet there is a hard_swish operator that is not supported by armnn_20.05. There is a similar ticket here. Not sure if MobilenetV2 ssd is any different. Best is to try it. All that you need should be mentioned in the other ticket.
If you need any additional help let me know.
Jan

Do you mean I need to rebuild the acl?

If you rebuild acl in debug it will give you more informative error messages. Also to build the armnn master branch you'll have to checkout the correct acl revision. After that you will have to rebuild acl.
To get the acl version that matches the armnn master branch, checkout the master branch in armnn and take a look at the following script:
nano armnn/scripts/get_compute_library.sh  # I use nano but you can use any text editor you like

You will find an entry in that file with the current revision of acl. Something like this::
# For pinning to a revision use this:
DEFAULT_CLFRAMEWORKREVISION="d6d1b3682a2cdd54bae5498635b108a4b19a045a" #COMPMID-37$

cd to your acl directory and git checkout <DEFAULT_CLFRAMEWORKREVISION> that revision. After, rebuild acl in debug mode. Finally, build armnn. It should all work now (And if not you'll get a more informative error message that you can bother me with :D ).
Let me know how it goes and good luck :+1:

repo: ARM-software/armnn


text:
Add families list to index

Having the family, and subfamily if present, available in the device info dict would be useful for presenting information to users, as well as for filtering. I'd prefer a single families key that is a list.

I'll add family and subfamily.

authors: flit theotherjimmy

repo: ARMmbed/cmsis-pack-manager


text:
Idle state in Firmware Object, resource State

Hello,
regardint to OMA-TS-LightweightM2M-V1_0-20151030-C, in Firmware Object, resource State, values must start from 0 to 2, but in mbedClient it still from 1:
typedef enum {
Idle = 1, // Note, that in new OMA spec should be 0.
Downloading,
Downloaded
}

ARM Internal Ref: IOTCLT-466

Thanks for your finding. We will fix this in future releases.

authors: anttiylitokola ciarmcom sirrko

repo: ARMmbed/mbed-client


text:
Modify Blinky to build with BareMetal by default

Provides a method to test BareMetal profile builds without modification in Mbed OS for 5.12 while highlighting the new feature.
Also cleaned  up the documentation to make it more release, toolchain, and target agnostic.
@SenRamakri @AnotherButler @studavekar
Docs PR pending

This is targeting master now, should it be OOB branch for 5.12 once we create it ?

@kegilbert ^^^

@bulislaw A variety of reasons, the most pressing being lack of Bare Metal build profile testing in Mbed OS at the moment (PSA changes last week broke bare metal for example).
Additionally this highlights the new bare metal profile feature, and allows us to show a progression of updates to blinky (See comments here: https://github.com/ARMmbed/mbed-os-5-docs/pull/1004 )

@0xc0170 Good point, if this is OK to go forward @bulislaw (Mohit was also pinged last Friday, Amanda added you to the thread just now), yes we'd like to see this on the OOB branch.

I find this confusing and I don't think the reasons are right.

the most pressing being lack of Bare Metal build profile testing in Mbed OS at the moment

Ok... lets add tests to the CI? I mean that should be important part of delivery of the PREQ (and it's part of the validation criteria!) Not to mention that right now examples are not tested in the CI (which is yet another of my headaches), fair enough it's compiled so we would at least check the build.
Changes to blinky are confusing, in the intro we are talking about things (statistics) that are not going to be there by default. I think we should be using blinky as a showcase of basic functionality of the OS. As it stands now, we include RTOS by default, in our top down approach. Therefore it makes sense for blinky to showcase this standard build. If we ever move towards more bottom up approach, where there's small base on top of which you can pick blocks you use, then it'll make sense to use the bare metal profile here.
How about we add section in the README that would mention the minimal blinky build without RTOS? And do a correct thing for the testing of bare metal profile - run proper tests on it?

My $0.02.
Blinky should be the bare minimum example check that always works. Attaching it to bleeding edge changes goes against this ethos. Maybe my point of view is incorrect in regards to our Blinky example, but if this helps us get closer to a smaller, more contained example, I'm for the change.

@bulislaw - The testing for tools support for "requires" mechanism/bare-metal is already implemented.The overall Bare-metal profile testing is what is required. That can only be tested using an example application. We could have written another special example but I'm not sure if its required considering the additional maintenance and OOB overhead, and as blinky already supports bare-metal it was more efficient to make it the default and add stats as additional steps. Let us know what you think.

I'd rather leave blinky as it is, basic straight of the box example of what people get when they just build stuff. I imagine a lot of people base their application of blinky, so I don't want them to need to play with configs and get confused straight away.
How about we create a bare metal example that showcase how to use event queue (or modify existing one if we have the event queue one already). It makes a lot of sense to use bare metal + event queue.

We have a handful of event queue examples and loverdeg did ask about RTOS-less EventQueue in the docs component PR, I wouldn't be opposed to that.
(Examples below):
https://os.mbed.com/docs/mbed-os/v5.11/apis/eventqueue.html

@bulislaw - Ok, that sounds fair, we will leave Blinky as it is for now and will probably create a separate example.

@SenRamakri @bulislaw Thoughts?
https://github.com/armmbed/mbed-os-example-baremetal-blinky
@geky (eventqueue review)

NOTE It looks like 5.11.5 doesn't have the bare-metal profile? I'd thought it was merged a while back but I had to build on master. We might have to wait until after 5.12 to setup this example.

Correct, 5.12
We can close this PR.

authors: 0xc0170 SenRamakri bulislaw cmonr kegilbert

repo: ARMmbed/mbed-os-example-blinky


text:
Help with 'bad message length'

Dear all,
I have a small problem with 'bad message length'.
I have finished the dtls handshake and try to let client send a msg to server through the session, then fail in here:
`else
{
if( ssl->in_msglen < ssl->transform_in->minlen )
{
MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length 3" ) );
return( MBEDTLS_ERR_SSL_INVALID_RECORD );
}
#if defined(MBEDTLS_SSL_PROTO_SSL3)`
. Below are some logs:
-MESH-CP-: bad message length
-MESH-CP-: discarding invalid record (header)
-MESH-CP-: bad application data message
-MESH-CP-: dropping unexpected ApplicationData
-MESH-CP-: discarding unexpected record (header)
Notice it does fail every time. Sometimes it succeed.
Best regards.

Hi @hjian2017,
thanks for your request! Could you provide more information on your configuration, communication trace and/or the application code you are running?
Regards,
Hanno

Hi Hanno,
Thx so much for the response. Yes, I mean "Notice it does not fail every time. Sometimes it succeeds."
I do more testing now, and I want to verify the issue like:
After the client finish the dtls handshake with server, the client sometimes get a dtls packet which rval is MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE when call mbedtls_ssl_read(&mSsl, buf, sizeof(buf)).
And then my code will mbedtls_ssl_session_reset(&mSsl) and try to rebuild dtls handshake again mbedtls_ssl_handshake(&mSsl).
Then the client will sent a client hello and  hold on waiting for response. But the server doesn't know it . The server is on the MBEDTLS_SSL_HANDSHAKE_OVER state.
In fact, it is not my code, it is an opensource project(openthread) you might know. If you want to see the code , here is the link : https://github.com/openthread/openthread/blob/master/src/core/meshcop/dtls.cpp
The fuction is void Dtls::Process(void), please focus on the lines: 494 495.
I think that might be a bug.
I want to know if the process of dtls handshake is finished. Is the client possible get a MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE packet. If it is possible, should we reset the ssl and try to rebuild the dtls handshake or just ignore MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE packet(I found if I ignore, it looks good.)
Best regards.
Jian

By the way, if I add a line:
else if(rval == MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE && mSsl.state == MBEDTLS_SSL_HANDSHAKE_OVER)             break; // ignore it
then everything is good.

Hi @hjian2017,
thanks for the additional information. Could you potentially turn on debugging output from the Mbed TLS client and post that here? That would reveal the message that triggers the failure. Alternatively, or even additionally, a Wireshark log would be helpful.
Thank you,
Hanno

Hi Hanno,
Here are the client logs:
MESH-CP-: => handshake
-MESH-CP-: client state: 0
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: client state: 1
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => write client hello
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 99, out_left: 99
-MESH-CP-: ssl->f_send() returned 99 (-0xffffff9d)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: <= write client hello
-MESH-CP-: client state: 2
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse server hello
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: <= handshake
-MESH-CP-: => handshake
-MESH-CP-: client state: 2
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse server hello
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 60 (-0xffffffc4)
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 60, nb_want: 60
-MESH-CP-: <= fetch input
-MESH-CP-: <= read record
-MESH-CP-: received hello verify request
-MESH-CP-: <= parse server hello
-MESH-CP-: => parse hello verify request
-MESH-CP-: <= parse hello verify request
-MESH-CP-: client state: 1
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => write client hello
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 131, out_left: 131
-MESH-CP-: ssl->f_send() returned 131 (-0xffffff7d)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: <= write client hello
-MESH-CP-: client state: 2
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse server hello
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: <= handshake
-MESH-CP-: => handshake
-MESH-CP-: client state: 2
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse server hello
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 838 (-0xfffffcba)
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 838, nb_want: 78
-MESH-CP-: <= fetch input
-MESH-CP-: <= read record
-MESH-CP-: server hello, total extension length: 13
-MESH-CP-: <= parse server hello
-MESH-CP-: client state: 3
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse certificate
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: next record in same datagram, offset: 78
-MESH-CP-: in_left: 760, nb_want: 13
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 760, nb_want: 532
-MESH-CP-: <= fetch input
-MESH-CP-: <= read record
-MESH-CP-: <= parse certificate
-MESH-CP-: client state: 4
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse server key exchange
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: next record in same datagram, offset: 532
-MESH-CP-: in_left: 228, nb_want: 13
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 228, nb_want: 170
-MESH-CP-: <= fetch input
-MESH-CP-: <= read record
-MESH-CP-: ECDH curve: secp256r1
-MESH-CP-: Server used SignatureAlgorithm 3
-MESH-CP-: Server used HashAlgorithm 4
-MESH-CP-: <= parse server key exchange
-MESH-CP-: client state: 5
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse certificate request
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: next record in same datagram, offset: 170
-MESH-CP-: in_left: 58, nb_want: 13
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 58, nb_want: 33
-MESH-CP-: <= fetch input
-MESH-CP-: <= read record
-MESH-CP-: <= parse certificate request
-MESH-CP-: client state: 6
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse server hello done
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: next record in same datagram, offset: 33
-MESH-CP-: in_left: 25, nb_want: 13
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 25, nb_want: 25
-MESH-CP-: <= fetch input
-MESH-CP-: <= read record
-MESH-CP-: <= parse server hello done
-MESH-CP-: client state: 7
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => write certificate
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 562, out_left: 562
-MESH-CP-: ssl->f_send() returned 562 (-0xfffffdce)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: <= write certificate
-MESH-CP-: client state: 8
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => write client key exchange
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 91, out_left: 91
-MESH-CP-: ssl->f_send() returned 91 (-0xffffffa5)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: <= write client key exchange
-MESH-CP-: client state: 9
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => write certificate verify
-MESH-CP-: => derive keys
-MESH-CP-: <= derive keys
-MESH-CP-: => calc verify sha256
-MESH-CP-: <= calc verify
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 99, out_left: 99
-MESH-CP-: ssl->f_send() returned 99 (-0xffffff9d)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: <= write certificate verify
-MESH-CP-: client state: 10
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => write change cipher spec
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 14, out_left: 14
-MESH-CP-: ssl->f_send() returned 14 (-0xfffffff2)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: <= write change cipher spec
-MESH-CP-: client state: 11
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => write finished
-MESH-CP-: => calc  finished tls sha256
-MESH-CP-: <= calc  finished
-MESH-CP-: => write record
-MESH-CP-: => encrypt buf
-MESH-CP-: <= encrypt buf
-MESH-CP-: => flush output
-MESH-CP-: message length: 53, out_left: 53
-MESH-CP-: ssl->f_send() returned 53 (-0xffffffcb)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: <= write finished
-MESH-CP-: client state: 12
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse change cipher spec
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: <= handshake
-MESH-CP-: => handshake
-MESH-CP-: client state: 12
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse change cipher spec
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 78 (-0xffffffb2)
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 78, nb_want: 78
-MESH-CP-: <= fetch input
-MESH-CP-: dropping out-of-sequence message: message_seq = 1, expected = 6
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: <= handshake
-MESH-CP-: => handshake
-MESH-CP-: client state: 12
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse change cipher spec
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 532 (-0xfffffdec)
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 532, nb_want: 532
-MESH-CP-: <= fetch input
-MESH-CP-: dropping out-of-sequence message: message_seq = 2, expected = 6
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: <= handshake
-MESH-CP-: => handshake
-MESH-CP-: client state: 12
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse change cipher spec
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 170 (-0xffffff56)
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 170, nb_want: 170
-MESH-CP-: <= fetch input
-MESH-CP-: dropping out-of-sequence message: message_seq = 3, expected = 6
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: <= handshake
-MESH-CP-: => handshake
-MESH-CP-: client state: 12
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse change cipher spec
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 33 (-0xffffffdf)
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 33, nb_want: 33
-MESH-CP-: <= fetch input
-MESH-CP-: dropping out-of-sequence message: message_seq = 4, expected = 6
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: <= handshake
-MESH-CP-: => handshake
-MESH-CP-: client state: 12
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse change cipher spec
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 25 (-0xffffffe7)
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 25, nb_want: 25
-MESH-CP-: <= fetch input
-MESH-CP-: received message from last flight, message_seq = 5, start_of_flight = 6
-MESH-CP-: => mbedtls_ssl_resend
-MESH-CP-: initialise resending
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 562, out_left: 562
-MESH-CP-: ssl->f_send() returned 562 (-0xfffffdce)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 91, out_left: 91
-MESH-CP-: ssl->f_send() returned 91 (-0xffffffa5)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 99, out_left: 99
-MESH-CP-: ssl->f_send() returned 99 (-0xffffff9d)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: => write record
-MESH-CP-: => flush output
-MESH-CP-: message length: 14, out_left: 14
-MESH-CP-: ssl->f_send() returned 14 (-0xfffffff2)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: => write record
-MESH-CP-: => encrypt buf
-MESH-CP-: <= encrypt buf
-MESH-CP-: => flush output
-MESH-CP-: message length: 53, out_left: 53
-MESH-CP-: ssl->f_send() returned 53 (-0xffffffcb)
-MESH-CP-: <= flush output
-MESH-CP-: <= write record
-MESH-CP-: <= mbedtls_ssl_resend
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: <= handshake
-MESH-CP-: => handshake
-MESH-CP-: client state: 12
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse change cipher spec
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 67 (-0xffffffbd)
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 67, nb_want: 14
-MESH-CP-: <= fetch input
-MESH-CP-: <= read record
-MESH-CP-: <= parse change cipher spec
-MESH-CP-: client state: 13
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => parse finished
-MESH-CP-: => calc  finished tls sha256
-MESH-CP-: <= calc  finished
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: next record in same datagram, offset: 14
-MESH-CP-: in_left: 53, nb_want: 13
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 53, nb_want: 53
-MESH-CP-: <= fetch input
-MESH-CP-: => decrypt buf
-MESH-CP-: <= decrypt buf
-MESH-CP-: <= read record
-MESH-CP-: <= parse finished
-MESH-CP-: client state: 14
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: handshake: done
-MESH-CP-: client state: 15
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: <= handshake
-MESH-CP-: BH AE Dtls handshake has completed!
-MESH-CP-: => read
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 14 (-0xfffffff2)
-MESH-CP-: <= fetch input
-MESH-CP-: bad message length 3
-MESH-CP-: discarding invalid record (header)
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: => read
-MESH-CP-: => flush output
-MESH-CP-: <= flush output
-MESH-CP-: => read record
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 0, nb_want: 13
-MESH-CP-: ssl->f_recv(_timeout)() returned 53 (-0xffffffcb)
-MESH-CP-: <= fetch input
-MESH-CP-: => fetch input
-MESH-CP-: in_left: 53, nb_want: 53
-MESH-CP-: <= fetch input
-MESH-CP-: => decrypt buf
-MESH-CP-: <= decrypt buf
-MESH-CP-: <= read record
-MESH-CP-: bad application data message
B&R
Jian

Hi @hjian2017,
thanks for the log! The path printing the last message is here and to my present understanding, it should never be taken: alert and handshake messages are explicitly handled before, and CCS messages are dropped - at least in theory. I would like to investigate this further, but for that I need a more detailed log, which you could obtain by increasing the debug level. This is passed as an argument to the debugging function configured through mbedtls_ssl_conf_dbg, so you should find that call and make sure the registered functions prints everything, regardless of the debugging level.
Thank you,
Hanno

Hi Hanno,
Thanks for the help.
I tried but failed to get more log on client because of the serial port speed limit.
As you see , the handshake process has been finished, and then the client got a MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE msg. I think I have addressed the issue.
So my question is:
if the process of dtls handshake is finished. Is the client possible get a MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE packet. If it is possible, should we reset the ssl and try to rebuild the dtls handshake or just ignore MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE packet(I found if I ignore, it looks good.)
In my opinion, it is possible. For example, after the handshake, the client possible receive some bad msgs . What we need to do is ignore the bad msgs.  So I add some codes like else if(rval == MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE && mSsl.state == MBEDTLS_SSL_HANDSHAKE_OVER) break; // ignore it, and then everything is ok.
Please have a look this fuction and then you will know what I mean (when we start a handshake or get a dtls msg, the client will run the Process function):
`void Dtls::Process(void)
{
uint8_t buf[MBEDTLS_SSL_MAX_CONTENT_LEN];
bool    shouldClose = false;
int     rval;
while (mStarted)
{
    if (mSsl.state != MBEDTLS_SSL_HANDSHAKE_OVER)
    {
        rval = mbedtls_ssl_handshake(&mSsl);

        if ((mSsl.state == MBEDTLS_SSL_HANDSHAKE_OVER) && (mConnectedHandler != NULL))
        {
            mConnectedHandler(mContext, true);
        }
    }
    else
    {
       //after the handshanke, it might get a bad msg here.
        rval = mbedtls_ssl_read(&mSsl, buf, sizeof(buf));
    }

    if (rval > 0)
    {
        mReceiveHandler(mContext, buf, static_cast<uint16_t>(rval));
    }
    else if (rval == 0 || rval == MBEDTLS_ERR_SSL_WANT_READ || rval == MBEDTLS_ERR_SSL_WANT_WRITE)
    {
        break;
    }

    else
    {
        switch (rval)
        {
        case MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY:
            mbedtls_ssl_close_notify(&mSsl);
            ExitNow(shouldClose = true);
            break;

        case MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED:
            break;

        case MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE:
            mbedtls_ssl_close_notify(&mSsl);
            ExitNow(shouldClose = true);
            break;

        case MBEDTLS_ERR_SSL_INVALID_MAC:
            if (mSsl.state != MBEDTLS_SSL_HANDSHAKE_OVER)
            {
                mbedtls_ssl_send_alert_message(&mSsl, MBEDTLS_SSL_ALERT_LEVEL_FATAL,
                                               MBEDTLS_SSL_ALERT_MSG_BAD_RECORD_MAC);
                ExitNow(shouldClose = true);
            }

            break;

        default:
            if (mSsl.state != MBEDTLS_SSL_HANDSHAKE_OVER)
            {
                mbedtls_ssl_send_alert_message(&mSsl, MBEDTLS_SSL_ALERT_LEVEL_FATAL,
                                               MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE);
                ExitNow(shouldClose = true);
            }

            break;
        }

        ///We can't reset here. If we get a bad msg and  reset here, client will restart a handshake process but server doesn't know.
        mbedtls_ssl_session_reset(&mSsl);
        mbedtls_ssl_set_hs_ecjpake_password(&mSsl, mPsk, mPskLength);
        break;
    }
}

exit:
if (shouldClose)
{
    Close();
}

}``

Hi @hjian2017,
apologies for not getting back to you earlier.
I have studied the log you sent in more detail, and what's happening is the following:

The client sends its last flight and listens for the server's last flight; when it receives a retransmission from the server instead, it resends its last flight.
The server responds with its last flight containing the ChangeCipherSpec message and the Finished message (within a single datagram); Mbed TLS processes both records and completes the handshake.
When the server sees the Client's retransmission, it retransmits its last flight.
When the client receives the server's last flight again, it has already completed the handshake and switched to the next incoming epoch. In that epoch, the ChangeCipherSpec record (length 14) is below the minimum record length, hence is dropped (logging bad message length 3). This is to be expected, and correct behavior. Next, the client receives the Finished message again, which should be dropped by the stack, and all LTS versions of Mbed TLS are doing that; see e.g. here.

However, there was bug previously which would lead to the Finished message to go through, triggering the MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE error, in case MBEDTLS_SSL_RENEGOTIATION was not defined.
Could you confirm that you are running a version >= 2.2 and <= 2.6, and that MBEDTLS_SSL_RENEGOTIATION is disabled? If so, please update to one of the LTS branches of Mbed TLS, which should fix the problem. If not, we'll need to investigate further.
Kind regards,
Hanno

We believe this question was answered, therefore closing it.
If this issue remains, please reopen with additional information

authors: RonEld hanno-arm hjian2017

repo: ARMmbed/mbedtls


text:
Has anyone ported the email client to arduino platform

This is not a bug, rather a question. Has anyone ported the ssl/ssl_email_client.c to an arduino platform? or could someone help me with it? platform is Arduino Due, with arm cortex m3 processor.

ARM Internal Ref: IOTSSL-595

If your question is very simply, "has anyone ported mbed TLS to the Arduino Due", than this has come up in the forum before, and people have done that.
When porting to a new platform, as long as you meet the dependencies documented here, the email sample should work for you.
If you'd like help or support, I suggest you post a more specific question to the mbed TLS forum here or to a similar Arduino forum. Normally, people will be very helpful if they have a specific question, but broad, very open questions get less response because they're much more difficult to answer.
I'm closing this issue because it's a question I think I've answered, but if you need some specific help, please pose a question that is more specific, either here, or in the forum and you may get more help.

authors: ciarmcom kapyaar sbutcher-arm


text:
Make debug_func respect the MBEDTLS_DEBUG_C configuration macro

Description
I found that the rsa_debug function is compiled into the binary file even though the MBEDTLS_DEBUG_C macro definition is commented out, because the function pointer is stored in mbedtls_rsa_info.
I think rsa_debug seems to be meaningless when MBEDTLS_DEBUG_C is commented out.
debug_func should respect the MBEDTLS_DEBUG_C configuration macro.
Status
READY
Requires Backporting
NO
Todos

[ ] Tests
[ ] Documentation
[ ] Changelog updated
[ ] Backported

Hi @SpriteOvO,
Thank you for your report and for opening a PR!
The underlying issue here is that MBEDTLS_DEBUG_C controls debug functionality which is specific to the SSL/TLS module. The documentation merely hints at that since only ssl_xxx.c are impacted by MBEDTLS_DEBUG_C, but clearly this has to be documented explicitly. As it stands, it is natural to assume that MBEDTLS_DEBUG_C would cover all debugging functionality, which as you have observed, is not the case. I will open a GitHub issue for the improvement of the documentation of MBEDTLS_DEBUG_C.
In particular, the PK debugging API isn't meant to be controlled via MBEDTLS_DEBUG_C. If it shall be possible to disable it, we'd need to introduce a separate configuration option for this. Before concretely suggesting that, I'd hear other team member's opinions, though -- ping @gilles-peskine-arm @mpg.
Finally, you  might wonder why we can't expand the scope of MBEDTLS_DEBUG_C to include the PK debugging interface, and here the primary reason is that long-term we want the Crypto and TLS modules of Mbed TLS to be cleanly separated, which in particular means that we want to avoid functionality shared between them.
In summary, I suggested to close this PR and instead (a) make sure that the documentation of MBEDTLS_DEBUG_C is improved, and potentially (b) introduce a configuration option controlling the availability of the PK debugging functionality.
Kind regards,
Hanno

In principle, I agree with the intent of this pull request. The pk debug interface is sparsely documented, and it's clearly there only for the sake of the ssl debug interface. So it would make sense to include pk debug only when ssl debug is included.
MBEDTLS_DEBUG_C currently only controls whether libmbedtls include the debug module. Consider a configuration with only crypto and not tls: MBEDTLS_DEBUG_C is disabled in config.h. With this change, mbedtls_pk_info no longer has a debug_func field. This is an ABI break, but not an API break, since mbedtls_pk_info is defined in an internal header.
I'm uneasy at having MBEDTLS_DEBUG_C control something that isn't the debug module or some module that depends on it. Normally, MBEDTLS_XXX_C only controls whether xxx.c is included in the build, and code that depends on the xxx functionality: not code that's mostly useful to implement xxx. Our configuration interface is already complex enough, I prefer not to make it even more irregular.
We could introduce a new option MBEDTLS_PK_DEBUG. It could go as far as excluding the function mbedtls_pk_debug from the build. The only argument I have against that is that each added compilation option adds some complexity to the build and the testing. @SpriteOvO How critical is the code size saving from excluding the debug wrappers?
I think we should revisit this when we redesign the configuration interface, probably in 3.0 or in some later 3.x.

@gilles-peskine-arm My goal is not to reduce the code size, I just want to delete the useless strings. Because these strings will provide a lot of useful information to reverse engineers.

What useful information do these strings convey? There are plenty of other strings and artifacts that would identify the code as Mbed TLS.

Usually, when a reverse engineer sees a piece of pseudo-code, he doesn't immediately know what the code is for, he needs to think and experience. If he sees the string "RSA" here, anyone would know that it is encryption/decryption related code.
I didn't intentionally hide that I was using the mbedtls library, so I hope I haven't been misunderstood.
Thank you!

I'm not very knowledgeable about reverse engineering, but as far as I know, it's fairly easy to identify cryptography code. Most symmetric algorithms only have so many ways to implement the core functionality (and if they call special-purpose hardware instructions it's even more obvious). Bignum arithmetic is a telltale of asymmetric cryptography. Hiding cryptographic code would be a project in itself and goes a lot beyond hiding a few strings.
If you have pk parsing enabled, you need the OID module, anyway, and that module is pretty much all strings. RSA itself uses a few OID and in Mbed TLS it requires the OID module.
The pk module itself includes strings in the pk_info structure. The debug strings don't add any information.

authors: SpriteOvO gilles-peskine-arm hanno-arm


text:
Checking for version, for OS master support

Fix for Issue: Version check will fail for mbed-os master branch.
Checking if version is defined, on master branch no version number is present, so will just issue the warning.

Note, it seems that this is now emitting warnings when used with master, since master does not have a "version". Not sure if this is expected.

Yes that is expected

authors: deepikabhavnani geky

repo: ARMmbed/sd-driver


text:
[Documentation] - Highlight that you need python3-catkin-tools

rosvenv uses catkin build, so I would highlight in the readme that for it to work you need to have previously installed
`sudo apt-get install python3-catkin-tools'

@vonHartz Can you investiagte?

Addressed in fa08298e5c9092779e3f019dca6b787a38d4b9cc

authors: ARoefer chisarie

repo: ARoefer/rosvenv


text:
🛑 API Words is down

In 858254e, API Words (https://simple-api-words.onrender.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: API Words is back up in 67b5d66 after 9 minutes.

repo: ASJordi/website-activity-status


text:
🛑 URL Shortener API is down

In 52c4ba2, URL Shortener API (https://api-url-zgau.onrender.com/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: URL Shortener API is back up in 64ad633 after 18 minutes.


text:
🛑 URL Shortener API is down

In 5cbd78b, URL Shortener API (https://api-url-zgau.onrender.com/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: URL Shortener API is back up in 80603d2 after 24 minutes.


text:
🛑 URL Shortener API is down

In ee91ad8, URL Shortener API (https://api-url-zgau.onrender.com/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: URL Shortener API is back up in 9f1bf7e after 27 minutes.


text:
Error loading script: trt.py

script_module = script_loading.load_module(scriptfile.path)
File "H:\stable-diffusion-webui\modules\script_loading.py", line 10, in load_module
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "H:\stable-diffusion-webui\extensions\stable-diffusion-webui-tensorrt\scripts\trt.py", line 6, in
from modules import script_callbacks, sd_unet, devices, shared, paths_internal
ImportError: cannot import name 'sd_unet' from 'modules' (unknown location)

I'm havin a similar problem.
I installed 2019 c++ build tools and pycuda & onnx after which they both seem to have installed fine and errors related to those are gone. Now I get this:
Error loading script: trt.py
Traceback (most recent call last):
File "C:\Auto1111\modules\scripts.py", line 263, in load_scripts
script_module = script_loading.load_module(scriptfile.path)
File "C:\Auto1111\modules\script_loading.py", line 10, in load_module
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "C:\Auto1111\extensions\stable-diffusion-webui-tensorrt\scripts\trt.py", line 6, in
from modules import script_callbacks, sd_unet, devices, shared, paths_internal
ImportError: cannot import name 'sd_unet' from 'modules' (unknown location)

git checkout dev                 感谢jilekjosef

@sunwukong0727 @jepjoo dev branch seems to be invisible for me both in web and in Git bash when I call $ git branch -r --list from the directory of the extension. Is it visible/accessible for everyone else? How does that work?

在stable  diffution 主目录下   鼠标右键
git checkout dev
On Mon, May 29, 2023 at 5:37 PM jepjoo @.***> wrote:

I'm havin a similar problem.
I installed 2019 c++ build tools and pycuda & onnx after which they both
seem to have installed fine and errors related to those are gone. Now I get
this:
Error loading script: trt.py
Traceback (most recent call last):
File "C:\Auto1111\modules\scripts.py", line 263, in load_scripts
script_module = script_loading.load_module(scriptfile.path)
File "C:\Auto1111\modules\script_loading.py", line 10, in load_module
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File
"C:\Auto1111\extensions\stable-diffusion-webui-tensorrt\scripts\trt.py",
line 6, in
from modules import script_callbacks, sd_unet, devices, shared,
paths_internal
ImportError: cannot import name 'sd_unet' from 'modules' (unknown location)
—
Reply to this email directly, view it on GitHub
https://github.com/AUTOMATIC1111/stable-diffusion-webui-tensorrt/issues/16#issuecomment-1566853235,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A6ZIEIEY3W7XBWQGVAKOJGTXIRU6PANCNFSM6AAAAAAYSQTUBU
.
You are receiving this because you authored the thread.Message ID:
@.***
.com>

Excuse my noobness but how can I get the "dev" branch?

@sunwukong0727 @jepjoo dev branch seems to be invisible for me both in web and in Git bash when I call $ git branch -r --list from the directory of the extension. Is it visible/accessible for everyone else? How does that work?

I think you have to do git checkout dev from the directory of the main repo, not the extension.

Find a blank space in the main directory of stable diffusion, right-click
on git base, and enter git checkout dev
On Mon, May 29, 2023 at 11:07 PM zaazii @.***> wrote:

Excuse my noobness but how can I get the "dev" branch?
—
Reply to this email directly, view it on GitHub
https://github.com/AUTOMATIC1111/stable-diffusion-webui-tensorrt/issues/16#issuecomment-1567254789,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A6ZIEIEHLOZ3HZIY45AAOKLXIS3RVANCNFSM6AAAAAAYSQTUBU
.
You are receiving this because you were mentioned.Message ID:
@.***
.com>

Thank you. It said branch is up to date with origin\dev. But I am still getting the Error loading script: trt.py

Thank you. It said branch is up to date with origin\dev. But I am still getting the Error loading script: trt.py

I am also getting the same error despite being on dev.

No module 'xformers'. Proceeding without it.
Error loading script: trt.py
Traceback (most recent call last):
File "E:\StableDiffusion\web-ui\modules\scripts.py", line 256, in load_scripts
script_module = script_loading.load_module(scriptfile.path)
File "E:\StableDiffusion\web-ui\modules\script_loading.py", line 11, in load_module
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "E:\StableDiffusion\web-ui\extensions\stable-diffusion-webui-tensorrt\scripts\trt.py", line 6, in
from modules import script_callbacks, sd_unet, devices, shared, paths_internal
ImportError: cannot import name 'sd_unet' from 'modules' (unknown location)

Despite being on dev branch:

PS E:\StableDiffusion\web-ui> git checkout dev
Already on 'dev'
Your branch is up to date with 'origin/dev'

Thank you. It said branch is up to date with origin\dev. But I am still getting the Error loading script: trt.py

I am also getting the same error despite being on dev.

No module 'xformers'. Proceeding without it.
Error loading script: trt.py
Traceback (most recent call last):
File "E:\StableDiffusion\web-ui\modules\scripts.py", line 256, in load_scripts
script_module = script_loading.load_module(scriptfile.path)
File "E:\StableDiffusion\web-ui\modules\script_loading.py", line 11, in load_module
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "E:\StableDiffusion\web-ui\extensions\stable-diffusion-webui-tensorrt\scripts\trt.py", line 6, in
from modules import script_callbacks, sd_unet, devices, shared, paths_internal
ImportError: cannot import name 'sd_unet' from 'modules' (unknown location)

Despite being on dev branch:

PS E:\StableDiffusion\web-ui> git checkout dev
Already on 'dev'
Your branch is up to date with 'origin/dev'

Did you guys fetch the latest changes to origin/dev with git fetch --all?

Did you guys fetch the latest changes to dev with git fetch --all (or equivalent)?

I can confirm about an hour after I originally posted, I realized I forgot to pull the new branch 🤦♂

Still happening to me, even though the dev branch was merged 5 hours ago

i did all and still get
Error loading script: trt.py

(base) cybertimon@server:~/Repositories/stable-diffusion-webui/extensions/stable-diffusion-webui-tensorrt$ git checkout dev error: pathspec 'dev' did not match any file(s) known to git
I get this error everytime I try to checkout to dev branch. Any help?


text:
Fix github actions pytest xml path

Tickets addressed: None
Review: By commit
Merge strategy: Merge (no squash)

Description

Right now Upload pytest test results step in github actions fail because of wrong path :

So changed where test-results-3.9.xml file is being saved to.
Verification

https://github.com/ephraim271/basilisk/actions/runs/3995079682/jobs/6853542172
Documentation

N/A
Future work

N/A

Hi @ephraim271, thanks for the contribution! It's very appreciated. Before we can merge it, new contributors to BSK need to submit a completed contributor license agreement (CLA). Currently, this amounts to me sending you the PDF and you returning to Dr. Schaub a filed copy. In the near future we are implementing a github action managed CLA process whereby new contributors will be prompted to accept the CLA as part of opening a PR. When you get a moment, let me know where I can email the PDF.

@patkenneally sure will do, is this your email? Patrick.Kenneally (at) lasp.colorado.edu

Hey @patkenneally , sent the CLA the other week, is anything else to do from my side? Thanks!

repo: AVSLab/basilisk

license: ISC


text:
[Bug] Program exits when certain strings are fed into the input, even if they are not "bye"

desired behaviour should be DIYeats does not understand the command

this bug can be replicated by entering long strings of spaces

Issue appears to have been resolved as of #214


text:
Add delete by tag function v2

As a user I should be able to delete all users under a single tag so I can quickly purge a particular group of contacts.
Closes #173

Closes #173

lgtm

authors: LinkedInk bangyiwu


text:
Add screenshots and minor fixes for UG

Add images and glossary. Made minor fixes according to feedback.

Codecov Report

Merging #246 (c21d03e) into UG-update (dfa3dfb) will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             UG-update     #246   +/-   ##
============================================
  Coverage        69.64%   69.64%
  Complexity         766      766
============================================
  Files              124      124
  Lines             2576     2576
  Branches           325      325
============================================
  Hits              1794     1794
  Misses             681      681
  Partials           101      101

Continue to review full report at Codecov.

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


text:
[#159] Date class

resolves #159

Add TaskDate class
Add parseTaskDate in Parser.Util
Update AddTaskCommandParser
Update EditTaskCommandParser with dummy TaskDate
Update JsonAdaptedTask
Update test files and test Task objects in typicalTasksTestList.json, TaskBuilder, TypicalTasks,

Codecov Report

Merging #183 (6ceaf97) into master (54af8da) will decrease coverage by 2.16%.
The diff coverage is 34.58%.

@@             Coverage Diff              @@
##             master     #183      +/-   ##
============================================
- Coverage     67.88%   65.71%   -2.17%
- Complexity      562      577      +15
============================================
  Files           105      106       +1
  Lines          1946     2065     +119
  Branches        227      252      +25
============================================
+ Hits           1321     1357      +36
- Misses          543      611      +68
- Partials         82       97      +15

Impacted Files
Coverage Δ

...ash/logic/commands/taskcommand/AddTaskCommand.java
100.00% <ø> (ø)

src/main/java/dash/logic/parser/ParserUtil.java
86.95% <0.00%> (-10.61%)
:arrow_down:

src/main/java/dash/model/util/SampleDataUtil.java
12.50% <0.00%> (ø)

src/main/java/dash/model/task/TaskDate.java
24.71% <24.71%> (ø)

src/main/java/dash/model/task/Task.java
71.79% <41.66%> (-14.88%)
:arrow_down:

...logic/parser/taskcommand/AddTaskCommandParser.java
87.50% <80.00%> (-12.50%)
:arrow_down:

...in/java/dash/storage/tasklist/JsonAdaptedTask.java
94.59% <81.81%> (-5.41%)
:arrow_down:

...sh/logic/commands/taskcommand/EditTaskCommand.java
87.27% <100.00%> (ø)

src/main/java/dash/logic/parser/CliSyntax.java
87.50% <100.00%> (+1.78%)
:arrow_up:

Continue to review full report at Codecov.

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

authors: NUSmhk codecov-commenter


text:
[PE-D] Documentation issue: Maybe include [] for optional fields in add command for comment, status and modules

Labels: severity.VeryLow type.DocumentationBug
original: blaketingyu/ped#12

Similar to #180


text:
Modify existing code base v1.0

Created 1 new module (expense) under src/main/java/model/ with 4 new classes:

Expense
Description
Category
Amount

Modified some code base to adapt to our project. Yet to remove existing module for person under the same module created above.

I reverted cause the CI was failing for your addition @lamwj98


text:
Update_meet_commands_functionality

Command changes

Removed ConfirmCommand
Added EmptyCommand functionality
Adding a meeting requires at least an attendee index
Adding a meeting requires at least an agenda
Invalid meeting indexes results in Unknown Attendees

Codecov Report

Merging #142 (8cea46d) into master (3b6b219) will decrease coverage by 0.13%.
The diff coverage is 16.00%.

@@             Coverage Diff              @@
##             master     #142      +/-   ##
============================================
- Coverage     50.77%   50.63%   -0.14%
- Complexity      601      603       +2
============================================
  Files           118      117       -1
  Lines          2651     2662      +11
  Branches        310      313       +3
============================================
+ Hits           1346     1348       +2
- Misses         1216     1224       +8
- Partials         89       90       +1

Impacted Files
Coverage Δ

.../java/seedu/address/logic/commands/AddCommand.java
92.30% <ø> (ø)

...java/seedu/address/logic/commands/BackCommand.java
0.00% <ø> (ø)

...va/seedu/address/logic/commands/DeleteCommand.java
100.00% <ø> (ø)

...edu/address/logic/commands/DeleteFieldCommand.java
0.00% <ø> (ø)

...java/seedu/address/logic/commands/EditCommand.java
93.33% <ø> (ø)

...java/seedu/address/logic/commands/ViewCommand.java
0.00% <ø> (ø)

...dress/logic/commands/meeting/CancelAllCommand.java
0.00% <0.00%> (ø)

...du/address/logic/commands/meeting/MeetCommand.java
0.00% <0.00%> (ø)

.../address/logic/commands/meeting/UpdateCommand.java
0.00% <0.00%> (ø)

.../seedu/address/logic/parser/AddressBookParser.java
72.72% <0.00%> (ø)

... and 9 more

Continue to review full report at Codecov.

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

authors: NicsunXnus codecov-commenter


text:
Refactor model

Refractor Person to Recipe

Please add refactoring of the fields - feel free to ping me or anyone for what fields we should store in an Ingredient, but my intuition for now is:
int amount
Item item
Optional unit


text:
[PE-D][Tester D] Sample add command does not work

When I copy and paste the sample command they gave when trying out the add command I get a invalid command format.

Labels: type.FunctionalityBug severity.High
original: tjch-o/ped#2

This has been addressed.

authors: nus-se-script ravern


text:
[PE-D][Tester C] Cannot turn off reminder when no longer has any internship to be reminded about.

Turn on reminder to remind me for one internship. However, once I marked the internship as applied, I cannot turn off the reminder. It is annoying being shown an empty reminder popup every time I open the application.
Suggestion: add command to turn off reminder

Labels: type.FeatureFlaw severity.Medium
original: ValenciaLim/ped#4

reminder -r off already exists


text:
Rename app's version number for trial release

Preparing for the trial release

This is a documentation update.

authors: cheahTJ hjuntan


text:
Fix bug in ClearCommand where bookings will also be deleted along with

contacts.

works well, improves it for target audience who only wants to clear the addressbook and not the consultations users have

authors: cyqjoseph gauravuj


text:
Standardise all UG/DG images

With respect to the size and cropping

maybe we need to change the screenshots that include the tags like 'family' and 'friends' as these tags don't seem logical in this context

Ye good catch, added another issue for that for now #117

Closed by https://github.com/AY2425S1-CS2103T-F14b-3/tp/pull/187


text:
[PE-D][Tester C] App is inefficient in managing multiple classes

Currently, there is no way to segment students into classes for each event, and every student is assumed to be absent in every single class. If the TA manages multiple classes, then he/she would see students from other classes in an event, which can be very confusing.
The use of groups does not improve this as the listattn command cannot be filtered using groups.
A suggestion would be to implement a field known as class which allows TA's to specify which classes the students are in and listattn can filter by these classes.

Labels: severity.High type.FeatureFlaw
original: wang-h-z/ped#5

Added as planned enhancement number 2 in DG


text:
Update mention of Address Book to be consistent with CareConnect

Currently, terms like "Address Book", "Address App" etc. are still used in various places across the app (such as in the app title, name of the storage file on disk etc.)
We may want to consider renaming these to better reflect the purpose of our app which is an address book specifically for managing social work cases
Alternative considered
Or we can just leave it as it is, since Address Book technically also captures what we're doing

fixed with commit 7ada1d8671a2d22999b4bc7c93428faf40f98559

authors: AppleJem mongj


text:
Add support for .NET Standard

This is excellent work!
Would it be possible to add support for .NET Standard? If so we could potentially use this for Blazor WASM projects as well. I took a stab at it and was able to get it to work. Here is a link my repository. I basically copied your code and simply created .NET Standard Razor Library. It works just fine within a Blazor WASM project as well as Blazor Server project.
Also would you be able to shed some light on how to implement a different type of InputText if a POCO property were to be decorated with a DataType of Password or Email?
[DataType(DataType.Password)] public string Password { get; set; }
Also would it possible for me to help you by building out other frameworks such as Bulma or Material? I think once the Layout feature is implemented this would be an amazing next step to get other CSS frameworks working with the core library.

hey @sroye98 thanks! Let me take a look at the .net standard and see what the implication are. Get back to you on that.
Regarding the second question: this is not implemented yet. So there needs to be an extra check on the property if it contains a extra datatype property. However it might be more scoped and clearer interface of the options if this DataType attribute is integrated into a VxFormField attribute that could contain more settings for a specific field. But this should be discussed in a separate feature issue. See #9 .
Any help would be appreciated, integrating more css frameworks. There is some stuff that needs to be fixed in .net 5 for it could really be production ready. As stated in my medium post.

At the moment of writing the EditForm component sets an valid, modified and invalid class when a input has changed and validated. This class in hard-coded so until https://github.com/dotnet/aspnetcore/pull/24835 is accepted, merged and published. We need a workaround like the one below.

For now you could take a look a the bootstrap and the article on adding support for a new CSS framework.

repo: Aaltuj/VxFormGenerator


text:
Aamiin12s

Can you send me your email find you

Can you tell me your email address


text:
Add sep tokens

@MartinBernstorff. I looked through the paper on this one, we do need the SEP tokens (though I think they aren't needed), however to add that we need to add visit

See #252.

authors: KennethEnevoldsen MartinBernstorff


text:
add session context and remove old contextvars

Fixes #131; adds sessioncontext, which will help us not have circular imports.

Looks good to me. No changes needed but a couple thoughts I had while reading:

A lot of files' imports have a from mentat.session.. block followed by a from .session.. block. These could be combined but doesn't need to happen here. I'd say remove mentat from imports where possible, if nothing else so our code has fewer tokens.
If a function uses only one context variable, I think it's fine to say stream = SESSION_CONTEXT.get().stream, instead of having two lines. This is of course preference, but I do see it in a couple places here.

I'll add an issue for the imports, because it's definitely true that we need some formatter for standardized imports

repo: AbanteAI/mentat


text:
Customize DropdownMenu border color

Hello, bro!
It's a usefull library.
But I have a question, is it possible to change the border color of DropdownMenu?
It would be cool to have this feature)
https://github.com/AbdullahChauhan/custom-dropdown/assets/124319560/00f5eb62-f5f9-45b0-a6fc-fbec94401572

Hey @weluid Thanks for the appreciation.
Yes, this will be available in upcoming release of the package :rocket:

Now available in 2.0.0. Thanks :+1:

Thanks!
Enjoy your day!

authors: AbdullahChauhan weluid

repo: AbdullahChauhan/custom-dropdown


text:
The public address in wallet cannot be copied and private key can't be hidden

Due to improper z index, the public address in the wallet both in eth and sol can't be copied. Neither we can hide the private key
By correcting the z-index, we can copy,
https://github.com/user-attachments/assets/9b186912-cc3b-4b39-8f12-7da12d378835
https://github.com/user-attachments/assets/063251ba-f9bd-46f1-9a7f-c4f907971929

@AbhiDiva96 I have raised the pr , please review it


text:
Update README.md

Some time ago RSS-Bridge maintainers moved wiki to docs.
Reference: https://github.com/RSS-Bridge/rss-bridge/issues/2624

Thanks for your revision!

repo: AboutRSS/ALL-about-RSS