Match colors of TV with colors of RGB stripe and define custom color values for R,G and B

The colors from the LED-Stripes never matches the color from the TV perfectly. For me the TV-red is a mixture of red and green on the LED-Stripes but I can not set the transformation between TV-red and Stripe-red.
For example in boblight you can set the color value for red as FF0301 to match the color of the red on the TV. If this feature can be included in hyperion it would be perfect!

+1
It would be awesome to set Hex Values to define the colors.

well, it doesn't have to be in HEX format, it could also be like that in config file:
            "red" :
			{
				"red       " : 1.0000,
				"green     " : 0.0000,
				"blue      " : 0.0000,
				"threshold"  : 0.0000,
				"gamma"      : 1.0000,
				"blacklevel" : 0.0000,
				"whitelevel" : 1.0000
			},
			"green" :
			{
				"red       " : 0.0000,
				"green     " : 1.0000,
				"blue      " : 0.0000,
				"threshold"  : 0.0000,
				"gamma"      : 1.0000,
				"blacklevel" : 0.0000,
				"whitelevel" : 1.0000
			},
			"blue" :
			{
				"red       " : 0.0000,
				"green     " : 0.0000,
				"blue      " : 1.0000,
				"threshold"  : 0.0000,
				"gamma"      : 1.0000,
				"blacklevel" : 0.0000,
				"whitelevel" : 1.0000
			}

and I found something in the ColorRgb.h file:
/// 'Red' RgbColor (255, 0, 0)
static ColorRgb RED;
/// 'Green' RgbColor (0, 255, 0)
static ColorRgb GREEN;
/// 'Blue' RgbColor (0, 0, 255)
static ColorRgb BLUE;

maybe there is some way to change hyperion to define standard colors to match TV

I think adding of Color correction should be done after grabber when RGB values of the single fields that are related to the LEDs on the stripe are known
Calculation should maybe look like this:
// get values from config (see post above)
// values from red
const double red_red = colorConfig.get("red", 1.0).asDouble();
const double red_green = colorConfig.get("green", 1.0).asDouble();
const double red_blue = colorConfig.get("blue", 1.0).asDouble();
// values from green
const double green_red = colorConfig.get("red", 1.0).asDouble();
const double green_green = colorConfig.get("green", 1.0).asDouble();
const double green_blue = colorConfig.get("blue", 1.0).asDouble();
// values from blue
const double blue_red = colorConfig.get("red", 1.0).asDouble();
const double blue_green = colorConfig.get("green", 1.0).asDouble();
const double blue_blue = colorConfig.get("blue", 1.0).asDouble();

// RGB Value from grabber (don't know where I get them from)
const double grabber_red, grabber_green, grabber_blue

// calculation
red   = red_red   * grabber_red + green_red   * grabber_green + blue_red   * grabber_blue;
green = red_green * grabber_red + green_green * grabber_green + blue_green * grabber_blue;
blue  = red_blue  * grabber_red + green_blue  * grabber_green + blue_blue  * grabber_blue;

// correction of max value
max=red;
if (green>max) max = green;
if (blue>max)  max = blue;
red   = red   / max;
green = green / max;
blue  = blue  / max;

Maybe this can help adding this feature?

+1
Need to calibrate the RGB colors in hyperion.

I wrote a small tool a  year ago, which can be used to adjust the colors: https://github.com/MarcDahlem/RGB-CAT

Thanks! I will check if it works with Raspberry Pi 2 and OpenELEC. But the main problem, the missing setting for RGB colors in Hyperion, will not be fixed with this.

+1
Yes, please make the RGB-colors adjustable by the config-file.

+1

+1

+1

A lot of progress is going on in hyperion, that's cool. Maybe this Issue will be fixed soon. I am ready to help as much as I can (if needed).

@AEtHeLsYn
Colors? Colors! This - may - be your part of interest
Adjust red green and blue like your whitelevel correction
If/How is up to you :)

@brindosch
I already saw the issue some time ago. Having a color correction matrix (CCM) would involve higher cpu usage as we would need to do all the math on the fly. Current correction and transform does all the math before and when we set colors it's only a matter of getting the already computed value. My first approach around color correction was about using CCM, but we have limited computing resources. Anyway, I'll take another look.

If you could find a future proof and not too cpu intensive way. I am sure people will like it :)

Dont know if this is Really needed... If you dont buy the cheapest usb grabber you have the right Color... People buy the cheapest usb grabber and the cheapest leds (f...ing ws2812b) and then Open millions of issues... I never(!) had Problems with my Setup (stk1160 grabber and lpd8806) sure May i paid more but my hyperion runs with 3 devices (leds behind my tv and two forwarded ikea lamps with leds) with 6-9% cpu... If the only solution is too cpu intensiv WE shouldnt invest time for to parsimonious People!!
Von meinem iPhone gesendet

Am 24.03.2016 um 14:47 schrieb brindosch<EMAIL_ADDRESS>If you could find a future proof and not too cpu intensive way. I am sure people will like it :)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub

@tpmodding I think you don't understand what is all about here. I am not using any hardware color grabber. It's just software inside hyperion with OpenELEC and the issue here is, that the color from TV and LED-Stripes is not matching, because for example LED-Red is not exactly the same then TV-Red and needs some modification (maybe a little bit blue and green) to match exactly.
Maybe you know something about color calibration on displays? Each display shows different colors.
About CPU-Power: maybe this feature can be added and you can choose to use or not. So everyone with RPi2 and lower can disable and maybe RPi3+ can handle it.

I am using a Plasma TV and red is ok, blue too, but my green is very very bad.
And i failed to correct this with tv settings.
@tpmodding
i see this more like the tv whitelvl. With this you could adjust redlvl bluelvl greenlvl to matching colors of your TV.
@emc02
A disable option may be not that good. It is just one more point to open issue because "everything is sluggish"

@brindosch @emc02
I already have this proposed modification coded and tested, I managed to avoid high cpu usage ;)
Anyway i still have not coded remote management of the new commands. Do you want me to commit my changes to beta version or do you prefer to test everything at the same time?
Btw, hyperion is almost perfect now ;)

I would prefer to test everything at the same time, saves you and us time :)
You could also have a look at led index (hyperion-remote) ;)
Don´t hurry. We have enough to do at the background :)

I will test everything if it's available.
Don't hurry, I've seen wrong colors for month, so a few weeks more doesn't matter ;)

#576

part of the BETA branch, you need to compile your own hyperiond
follow the "Feedback BETA XXX" issue for feedback and a little how to.
/Closed


Request to contribute

Hey , I would like to contribute to your repo , can you let me know where I should store the files and if there's a list of programs that you would like to finish first
Cheers

Hey, @Pandz18 thankyou for the request.
I have updated the README.md. Please have a look. I hope this will help you to solve your issue.
Happy coding!

Hey sure, thank you very much
You too


[ctis] Fix micro monthly script permissions

Description
The monthly micro script has been failing due to a permissions error. Turns out git tracks executability, who knew?
Changelog
Itemize code/test/documentation changes and files added/removed.

monthly-archive.sh: a+x

Fixes

Fixes failing cron job

looking at that test failure now

Failing test is unrelated and will be fixed by https://github.com/cmu-delphi/covidcast-indicators/pull/1458.


Feature: Auto reset trip on certain conditions

Reset der Daten nach bspw. 4h Standzeit, analog Bordcomputer

Ich denke ich werde eine Einstellung einbauen, in der man mit einem Slider selber festlegen kann, nach welcher Zeit ein automatischer Reset stattfinden soll.

This would be indeed a good change of functionality

Im currenty working on implementing four seperate data trackers collecting data at the same time. Each tracker has different reset conditions:

Reset after charging (keeping the last charging session for late view)
Reset after 4 h of parking
Reset at the beginning of every month (and saving the last one)
Manual reset as konwn

These four trackers have now been implemented and will be released with the next update: https://github.com/Ixam97/CarStatsViewer/commit/9353d9821a7ad24761418f514a32dbb366262480
For now, only the current trackers can be viewed. Viewing older trips will be added in the future, see https://github.com/Ixam97/CarStatsViewer/issues/46


Optimized JS code with logical OR assignment (x ||= is unsupported by MSIE11 using SIMPLE compression level

The code below produces a syntax error in MSIE11 and is produced when using the closure-compiler-v20220301, perhaps also earlier versions.
The Closure Compiler is invoked using Java 11 as:
java -Xmx400m -jar closure-compiler-v20220301.jar --charset UTF8 --compilation_level SIMPLE --js sourcefile.js
A JS function such as the one below (declared as object functions inside a {} block):
  padding: function(n,cP)
    {
    var c=cP,val=this.valueOf();
    if ( !n )
      return val;

    if ( !c )
      c=" ";

    var pad=String(c).charAt(0).repeat(Math.abs(n)-this.length);
    return n<0? pad+val: val+pad;
    }

causes the closure-compiled code to look like:
padding:function(c,f){var e=f;f=this.valueOf();if(!c)return f;e||=" ";e=String(e).charAt(0).repeat(Math.abs(c)-this.length);return 0>c?e+f:f+e}
When MSIE 11 executes the statement, it throws a SyntaxError.
"Of course" it works in other browsers (typical! :-).
Can this optimization be turned off somehow using some setting to the closure compiler?

Thank you for the prompt reply. It is a little sad though that this was not very clear in the documentation and that behavior changed drastically between two closure-compiler versions as we try to keep all jars up-to-date. FYI: the command line option --language_out ECMASCRIPT5 fixed our problem.


Remove py3.6 reference from dispatcher

Description
Ref: https://github.com/Azure/azure-functions-python-worker/issues/1038

Fixes #

PR information

[ ] The title of the PR is clear and informative.
[ ] There are a small number of commits, each of which has an informative message. This means that previously merged commits do not appear in the history of the PR. For information on cleaning up the commits in your pull request, see this page.
[ ] If applicable, the PR references the bug/issue that it fixes in the description.
[ ] New Unit tests were added for the changes made and CI is passing.

Quality of Code and Contribution Guidelines

[ ] I have read the contribution guidelines.

in testutil_lc, also remove there? @gavin-aguiar

More changes are needed for this PR. Making it a draft for now


echarts graph type, when dynamicly setting option zoom, happen exception

Version
4.8.0
Steps to reproduce

setted option (contain zoom: 1), and graph display correctly.
changed the option zoom, and graph display not correctly.

What is expected?
dynamicly setting option zoom, and graph corresponding react
What is actually happening?
error graph

does this have anything to do with setOption (notMerge)?

center option cause this issue.


feature: add bitcoin design icons

does this then include the whole icon set or also only the imported ones?

Only the imported ones (wallet / gear), the rest is ignored.


add verify command - verify source and destination connections

Required for all PRs:

[x] README.md updated (if needed)
[x] Passes gofmt and golint

updates #83


Suggestion: 2d items

I think It would be neat to add sprite rendered items back into the game for a bit of nostalgia as seeing 3d spinning items in an indev world I'm working on can sort of ruin the vibe for me.

Thanks for the suggestion, it's a bit outside of the scope of the mod though; I am willing to consider rendering additions if it serves the world generation.  Maybe in a separate mod.


Better error message for show_graphic

Calling show_graphic(None) leads to a confusing error message:
AttributeError: 'NoneType' object has no attribute 'is_empty_graphic'

While such a call is a type error, and ideally is caught by a static type checker, the situation occurs frequently in exercises where functions are not yet implemented (and to be implemented by students) and have pass as a body. Thus, this situation should cause an error message that is much more intuitive to students, e.g., that show_graphic needs to be called with an argument of type Graphic, but that it has been called with None (and a hint that there might be a function that should return a Graphic but that does not actually do so).

I'll fix it and add it to the next pull request. But honestly, I don't think that the hint adds

Given our special educational target, one question is whether we should manually raise an error for any function that expects to receive a parameter of type Graphic but instead gets an object of another type (not only NoneType).

e7ed5dcf23b214118d322f513ae2bce43f5781b4 introduces checks for types and sensible values for the parameters of the exposed functions.
Error messages refer to the names of the parameters and are localized, e.g.:
>>> from pytamaro import *
>>> show_graphic(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/lucach/repos/pytamaro/pytamaro/io.py", line 45, in show_graphic
    check_graphic(graphic)
  File "/Users/lucach/repos/pytamaro/pytamaro/graphic_utils.py", line 77, in check_graphic
    check_type(graphic, Graphic, parameter_name)
  File "/Users/lucach/repos/pytamaro/pytamaro/graphic_utils.py", line 54, in check_type
    raise TypeError(translate("INVALID_TYPE",
TypeError: Invalid type for parameter graphic: expected Graphic, got NoneType

>>> from pytamaro.it import *
>>> settore_circolare(100, -1, rosso)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/lucach/repos/pytamaro/pytamaro/it/primitives.py", line 76, in settore_circolare
    return circular_sector(raggio, angolo, colore)
  File "/Users/lucach/repos/pytamaro/pytamaro/primitives.py", line 87, in circular_sector
    check_angle(angle, 0, 360)
  File "/Users/lucach/repos/pytamaro/pytamaro/graphic_utils.py", line 26, in check_angle
    check_range(angle, lower_bound, upper_bound, "angle")
  File "/Users/lucach/repos/pytamaro/pytamaro/graphic_utils.py", line 101, in check_range
    raise ValueError(translate("INVALID_RANGE",
ValueError: Valore per il parametro angolo fuori dall'intervallo consentito [0, 360]

We're currently using standard Python exceptions, which means that the entire traceback gets printed as usual and our custom error message is shown in the last line.


Not sure if issue but ... Install Linux

I had to do a few tweak to get this to work on Ubuntu.

wireshark didnt include tshark - needs manual install on ubuntu
/opt/splunk/etc/apps/SplunkForPCAP/bin/pcap2csv.sh caused errors

changed:
if [[ "$TSHARK_V" =~ "$V2" ]]; then 	./$V11 elif [ "$TSHARK_V1" -le "10" ]; then 	./$V10 else 	./$V11
to:
if [[ "$TSHARK_V" =~ "$V2" ]]; then 	$V11 elif [ "$TSHARK_V1" -le "10" ]; then 	$V10 else 	$V11
as otherwise it tries to call the script with ./ which returns a file/command not found
not sure if the above is a general issue but I thought I mention it ...
feature request: allow pcap upload to /var/tmp from the interface ...

Hi Collse,
thanks for the hint. I will check it. First time i hear about it.
Regarding your request. I am happy to hear new ideas. Can you specify what you mean?

basically, a frontend that allows the pcap upload via your interface and that it will upload it to the specified directory, from where it will be read ... so I dont need to upload the pcaps via scp or so ..

Happy to help - keep up the good work!

Version 4.1.10 is available now.


Missing opensource license

There is no LICENSE file in the root of repository. Please add it, all public repos must have it

Done!


Running karate with patch method fails

Hi I am trying to run the below  feature fails. I suspect Patch method (content-type 'application/json-patch+json') might be the root cause for the issue.

feature  - https://github.com/vidhya03/http-patch-jax-rs/blob/master/src/test/java/com/labkit/test/personapi/PersonApi.feature

Project link -
https://github.com/vidhya03/http-patch-jax-rs

IDE error log -
surefire-reports.zip

Please let me know if you need to reproduce this issue

First - thanks for being one of the very few who actually provides proper information to replicate an error. I wish more of the world was like you !
Now, you are doing a couple of things wrong. You need to set headers BEFORE you fire the method, this is clearly mentioned in the documentation.
By the way, there is no need to set Content-Type 90% of the time as Karate will auto-detect and send it automatically.
So here is your final working test. The last step needs the Accept header to be set, else the server gets confused with the PATCH. Karate is working perfectly.
Background:
    * url 'http://http-patch-vidhya.1d35.starter-us-east-1.openshiftapps.com/v1'

Scenario: Test for PUT person
    Given path 'person'
    And request<EMAIL_ADDRESS>
    When method put
    Then status 204

Scenario: Navigate to Get person
    Given path 'person'
    When method get
    Then status 200
    And match response ==<EMAIL_ADDRESS>
Scenario: Test for POST person
    Given path 'person'
    And request<EMAIL_ADDRESS>
    When method post
    Then status 204

Scenario: Test for PATCH METHOD
    Given path 'person'
    And request [{ "op": "remove", "path": "/email" }, {"op":"replace", "path": "/name", "value": "Vidhyadharan Deivamani" }]
    And header Content-Type = 'application/json-patch+json'
    And header Accept = 'application/json'
    When method patch
    Then status 200

Thanks a lot Peeter Thoma @ptrthomas . You're really a community guy!. Cheers.


docs: update GitHub rate limit URL

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[ ] Have you successfully run brew tests with your changes locally?

update GitHub rate limit info to current documentation URL

Thanks again @dtrodrigues!


Http.fromFile should send an Internal Server Error response when the file does not exist.

This PR has 2 changes -

Internal Server Error when there is an Exception on Http.fromFile
CONTENT_ENCODING : Chunked is not present on Http.fromFile response

Codecov Report

Merging #782 (ceab40e) into main (2d26f13) will increase coverage by 0.09%.
The diff coverage is 61.53%.

@@            Coverage Diff             @@
##             main     #782      +/-   ##
==========================================
+ Coverage   51.75%   51.84%   +0.09%
==========================================
  Files          68       68
  Lines        2085     2089       +4
  Branches       63       61       -2
==========================================
+ Hits         1079     1083       +4
  Misses       1006     1006

Impacted Files
Coverage Δ

...io-http/src/main/scala/zhttp/service/Handler.scala
69.56% <58.33%> (+2.12%)
:arrow_up:

zio-http/src/main/scala/zhttp/http/Response.scala
71.18% <100.00%> (+0.49%)
: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 2d26f13...ceab40e. Read the comment docs.

This will be addressed as a part of #850


[Storage] Change truth value checking ElementTree to not emit DeprecationWarning

As title states!
Before merging:

Make change in _shared of other packages✔

Run live tests

API change check
API changes are not detected in this pull request.

/azp run python - storage - tests

/azp run python - storage - tests

/azp run python - storage - ci

Any idea when this might be released? Thanks! 😄

Hi @akx, this will be included in our next release which is tentatively planned for beta in early February and a full release in March. Thanks.


Added Customer_Review_Webapp files

Fixes
#128

Description
Added A Flask based app that provides the user with a form to fill a feedback about a product and saves it into a csv file to be listed in a simple webpage
Type of change

[x] New project (non-breaking change which adds functionality)

How Has This Been Tested?

Install the required dependencies

pip3 install flask wtforms pandas

Run the app

python3 app.py

App usage is accompanied in the demonstration video

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have included a README.md file
[x] My project follows this structure: Domain Folder/ Project Name Folder/ Project files and Readme.md files
[x] I have added demonstration in the form of GIF/video file
[x] I am a GSSoC'22 Participant

Demonstration Video
https://user-images.githubusercontent.com/64689436/157647479-742d1948-0a06-45a1-918c-313bc04334d8.mp4
fixes #128
PR made under GSSoC'22 contribution

@heet-kumar any updates about the review?


Support extra semicolons in protobuf file

Support extra semicolons in protobuf definition file. This allows
protobuf-schema to parse the google rtb protobuf file. [1]
[1] https://developers.google.com/ad-exchange/rtb/downloads/realtime-bidding-proto.txt

Thanks! Released in 1.5.1

Wow, that was a fast one. Thanks!

Will you release new version of https://github.com/mafintosh/protocol-buffers and https://github.com/mafintosh/resolve-protobuf-schema as well?

@dohse it gets pulled in there automatically because of semver when you reinstall :)


Strange Results When Searching Call Log

Hi. We get a number of calls where the CID name is something like "Washington Call" and I wanted to see if these ever came from other states. So in the dashboard, on the call log page, I performed a name search on call. The results are strange:

As you can see, it says there are 77 rows returned, that rows 1-25 are being displayed, and that there are multiple pages in the search results. However, only 8 rows are shown. Clicking on the other pages give a result like this:

So using a Sqlite DB Browser, I issued the query:
select * from calllog where name like '%call%'
and I get the following results:

As you can see, the query here also claims 77 rows in the result. However, I can see all of them in the DB browser. Strange!
I checked the monitor on CA while performing this query from the dashboard. I saw nothing untoward occur - like an error.
This may prove difficult to reproduce. And it is strange indeed. But it is not a major problem (at least for me).
Thanks, as always...

Not too difficult to reproduce... Was a matter of an incomplete feature implemented 4yrs ago by original author.
Fixed in 6abf15f2fe05ba7af1f27b34ed56dd9a6c382ee8
Thanks for rooting this out

That seems to produce far better results. It turns out that many of the 77 rows returned to me were for numbers added to the permit list with a "real" name. Now I get only 9 rows and that seems about right.
As always, thanks!

The "Release" is 2.0.4 and this commit is 2.0.7. How do I keep my install up-to-date?

Closed with release of v2.0.7


parallel tests

Description
Parallelize tests: seems like a dramatic speed boost
Commit Message / Changelog Entry
perf: parallelize tests

Benchmark
go clean -cache
go clean -testcache
time make test
for me on a 16gb macbook pro m1:
main
make test  564.15s user 84.38s system 295% cpu 3:39.64 total
parallel-tests
make test  560.54s user 83.24s system 296% cpu 3:37.23 total
Interested to see if this runs faster for those with faster machines though.

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[x] Targeted PR against correct branch (see
CONTRIBUTING.md).
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Code follows the module structure standards and Go style guide.
[ ] Wrote unit and integration tests.
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/).
[ ] Added relevant godoc comments.
[ ] Provide a commit message to be used for the changelog entry in the PR description for review.
[ ] Re-reviewed Files changed in the Github PR explorer.
[ ] Review Codecov Report in the comment section below once CI passes.

I think this might be...slower
At least if you clear the cache first?
Bizarre but I think true

I think this might be...slower

Yea IIRC the way tests are run via t.Parallel is not as clear cut as one would expect. Non-parallel tests are executed as they are found while parallel tests are paused, collected in some way and then executed all together in parallel in the end (roughly, docs). Implication being if you have mixed parallel/sequential, you probably won't be seeing full benefits.
Note that I am also not sure about the implications of calling parallel on the suite level (i.e suite.Run(t, new(...)) functions), I'm seeing an issue opened since 2016 on testify for this but don't have the time atm to go through it and see how much it might affect us.

@charleenfei I actually reached the same conclusion that you did. I kind of investigated this some on Twitter and I had other people try it out to, but in the end I'm really not sure that the benefit here is worth the additional lines of code, it's exactly like yourself. So I'm going to leave this open for maybe like one more day and unless somebody drops in saying that it's massively faster I'm going to close it tomorrow 🙂


Golden Invasion feature

Implementation for #290
Blocked by:

#292 or #293
#294

Right now it check for starting every 1 minute. Event duration = 5mins.
All golden mobs remain on the maps after event finished.
The spawn logic is simple like for regular mobs. ( In the next versions it might be like: Golden titan and Golden Soldiers around it and so on)

[x] Add packets and logic for enabling/disabling flying effects
[x] Add golden mobs definitions + drops
[x] Add basic plugin for Golden Invasion
[x] Add basic spawn logic
[x] Add period logic

I have an error on event start:
System.InvalidOperationException: No valid spawn point found. Spawn area might not contain valid points.
   at MUnique.OpenMU.GameLogic.NPC.NonPlayerCharacter.Initialize() in /OpenMU/src/GameLogic/NPC/NonPlayerCharacter.cs:line 85
   at MUnique.OpenMU.GameLogic.NPC.AttackableNpcBase.Initialize() in /OpenMU/src/GameLogic/NPC/AttackableNpcBase.cs:line 130
2022-12-01 22:53:03.870 +03:00 [Error] [MUnique.OpenMU.GameServer.GameServerMapInitializer] Object Great Bahamut - Quantity: 1 - At: 251/51 couldn't be initialized.
   at MUnique.OpenMU.GameLogic.MapInitializer.InitializeSpawnAsync(GameMap createdMap, MonsterSpawnArea spawnArea, IEventStateProvider eventStateProvider) in /OpenMU/src/GameLogic/MapInitializer.cs:line 187
   at MUnique.OpenMU.GameLogic.NPC.NonPlayerCharacter.Initialize() in /OpenMU/src/GameLogic/NPC/NonPlayerCharacter.cs:line 85
2022-12-01 22:53:03.890 +03:00 [Error] [MUnique.OpenMU.GameServer.GameServerMapInitializer] Object Great Bahamut - Quantity: 1 - At: 7/52 couldn't be initialized.
System.InvalidOperationException: No valid spawn point found. Spawn area might not contain valid points.
   at MUnique.OpenMU.GameLogic.MapInitializer.InitializeSpawnAsync(GameMap createdMap, MonsterSpawnArea spawnArea, IEventStateProvider eventStateProvider) in /OpenMU/src/GameLogic/MapInitializer.cs:line 187
   at MUnique.OpenMU.GameLogic.NPC.AttackableNpcBase.Initialize() in /OpenMU/src/GameLogic/NPC/AttackableNpcBase.cs:line 130
System.InvalidOperationException: No valid spawn point found. Spawn area might not contain valid points.

But IDK how to fix it.

I have an error on event start:
System.InvalidOperationException: No valid spawn point found. Spawn area might not contain valid points.
   at MUnique.OpenMU.GameLogic.NPC.NonPlayerCharacter.Initialize() in /OpenMU/src/GameLogic/NPC/NonPlayerCharacter.cs:line 85
   at MUnique.OpenMU.GameLogic.NPC.AttackableNpcBase.Initialize() in /OpenMU/src/GameLogic/NPC/AttackableNpcBase.cs:line 130
2022-12-01 22:53:03.870 +03:00 [Error] [MUnique.OpenMU.GameServer.GameServerMapInitializer] Object Great Bahamut - Quantity: 1 - At: 251/51 couldn't be initialized.
   at MUnique.OpenMU.GameLogic.MapInitializer.InitializeSpawnAsync(GameMap createdMap, MonsterSpawnArea spawnArea, IEventStateProvider eventStateProvider) in /OpenMU/src/GameLogic/MapInitializer.cs:line 187
   at MUnique.OpenMU.GameLogic.NPC.NonPlayerCharacter.Initialize() in /OpenMU/src/GameLogic/NPC/NonPlayerCharacter.cs:line 85
2022-12-01 22:53:03.890 +03:00 [Error] [MUnique.OpenMU.GameServer.GameServerMapInitializer] Object Great Bahamut - Quantity: 1 - At: 7/52 couldn't be initialized.
System.InvalidOperationException: No valid spawn point found. Spawn area might not contain valid points.
   at MUnique.OpenMU.GameLogic.MapInitializer.InitializeSpawnAsync(GameMap createdMap, MonsterSpawnArea spawnArea, IEventStateProvider eventStateProvider) in /OpenMU/src/GameLogic/MapInitializer.cs:line 187
   at MUnique.OpenMU.GameLogic.NPC.AttackableNpcBase.Initialize() in /OpenMU/src/GameLogic/NPC/AttackableNpcBase.cs:line 130
System.InvalidOperationException: No valid spawn point found. Spawn area might not contain valid points.

But IDK how to fix it.

Just ignore it for now. Atlans has some invalid spawn areas defined.

Change one thing please, before I merge this:
Can you move the GoldenInvasionPlugin.cs into a separate subfolder "InvasionEvents", and put each class/type into its own file?

Done


Created _index.de.md with fitting headers

This one should have all headers right.

Thanks!

The translation is now shown here https://www.copetti.org/de/projects/consoles/


Inability to Properly Manage Fund Reserves in Wallet

These issues include:

No Limit on Reservation Relative to Balance: Users can reserve any large integer, regardless of your account balance.
Allowing Transfers Despite Reserved Funds: The wallet permits users to make transfers even when funds are reserved.

added CancelInvoiceSendPayment method


Minor enhancement: Favourites feature

Add new feature for users to add person to favourites, remove person from favourites and list all person in favourites.

@demitycho I've resolved the merge conflict


Rework NorFlash & Storage traits

Rework NorFlash & Storage traits
Add RmwNorFlashStorage wrapper between them

The RmwNorFlashStorage implementation might be possible to improve? Please consider that as my crude first attempt. It is tested and works though. I am not 100% into the write_size/erase_size usage, so please correct me on those.
I have added an implementation of RmwNorFlashStorage that should be able to utilize MultiwriteNorFlash as well, but it is still untested. Also it requires https://github.com/rust-lang/rust/issues/31844 to live alongside the implementation without multiwrite.
I currently have an implementation for STM32L4xx_HAL if you are interested.
This is my attempt to encapsulate the discussion going on, so please keep it coming!
@eldruin @Sympatron

I think the latest change her addresses most of the concerns people have highlighted, with some limitations?
capacity() has been left a runtime function, as i think lots of chip families have common read, write and erase sizes, but just change the capacity, making it easier to read capacity at runtime and return that. This might mean that it should actually take &mut self though?
#13 Should also be addressed by this
Stuff left to figure out:

https://github.com/rust-embedded-community/embedded-storage/pull/12/files#diff-d3d015d586aa5b2b1e4ccd99bc9c9e3de7cc4429a30b998d15c3091b10581dd1R125 should make use of S::ERASE_SIZE
The MultiwriteNorFlash wrapper for Storage is still missing. Suggestions on naming?
Type of addresses? u32/usize/Address()
All addresses are normalized from 0..self.capacity() ? Document this without a doubt!
Error handling (generic error? impl Into<..>? Basically same discussion as embedded-hal)

Limitations:

Multiple regions are only supported through multiple implementations: impl NorFlash for Region1 + impl NorFlash for Region2 or similar.
Non-uniform regions are unsupported, but can be implement using biggest region size, and combining smaller regions.

should make use of S::ERASE_SIZE

To get rid of that error, add where [u8; S::ERASE_SIZE]: Sized

Type of addresses? u32/usize/Address()

For NorFlash u32/usize would be OK, I don't think there are 4GB+ NOR flashes.
For Storage, people will want to do ipmls for SD cards, which can easily be bigger than 4GB.
For consistency it's nice if all traits have the same address type.
It's not nice to force an u64 address on everyone, it's useless overhead on 32bit arches if you don't need it.

Maybe given this the best way to go is make it generic? I'm not a fan of adding even more generic params but maybe it's the best option :S

All addresses are normalized from 0..self.capacity() ? Document this without a doubt!

I'd say yes. Makes using traits harder otherwise, and I don't think it adds anything of value :|

Error handling (generic error? impl Into<..>? Basically same discussion as embedded-hal)

No idea :shrug:  I somewhat prefer a non_exhaustive Enum instead of a type Error, for the reasons here. TLDR is drivers using the traits can't really handle the errors otherwise, as they know nothing about the type. The downside is it doesn't allow for custom errors. I personally don't find that a problem but other people have different opinions.

Hmm, i can't seem to make the where [u8; S::ERASE_SIZE]: Sized work?
error[E0599]: no associated item named `ERASE_SIZE` found for type parameter `S` in the current scope
   --> src/nor_flash.rs:113:9
    |
113 | [u8; S::ERASE_SIZE]: Sized,
    |         ^^^^^^^^^^ associated item not found in `S`
    |
    = help: items from traits can only be used if the type parameter is bounded by the trait
help: the following trait defines an item `ERASE_SIZE`, perhaps you need to restrict type parameter `S` with it:
    |
111 | impl<S: NorFlash> Storage for RmwNorFlashStorage<S>
    |      ^^^^^^^^^^^

error: aborting due to previous error

On the error part how about something like
pub enum Error<E> {
    CommonErrors,
    ...,
    Custom(E)
}
pub trait NorFlash: ReadNorFlash {
    type UserError: Debug;

    fn try_write(&mut self, address: u32, bytes: &[u8]) -> Result<(), Error<Self::UserError>> {
         ...
    }
}

That way it should be easy to just make UserError = Infallible/() if everything is covered by the Error enum. We can still amke the Error enum non_exhaustive to allow adding error handling as we go.

@Dirbaio Hmm, i can't seem to make the where [u8; S::ERASE_SIZE]: Sized work?

Do you have the code somewhere? I can try taking a look

https://github.com/rust-embedded-community/embedded-storage/tree/storage-rework

Wow, I think it's not possible with the 1.51 min_const_generics. It does work with these features:
#![feature(const_generics)]
#![feature(const_evaluatable_checked)]

An alternative is something like pub struct RmwNorFlashStorage<S, const ERASE_SIZE: usize> (S), then the array works with min_const_generics BUT there's no way to enforce that S::ERASE_SIZE = Self::ERASE_SIZE :(

Hmm, how would i propagate this PR the remaining distance? It seems like all it is missing is

Error handling discussion (Could be postponed to another PR)
Handling that const merge_buffer size in the RmwNorFlashStorage
Enabling the RmwMultiwriteNorFlashStorage after finding a better name for it?

No strong opinion on errors, we could leave it as it is now which is the same as embedded-hal, and revisit it later once it's revisited in embedded-hal?
Not sure what to do about the merge buffer. Maybe have the user pass a &mut [u8] and panic at runtime if it's too small?
Is the RmwMultiwriteNorFlashStorage really needed? All MultiwriteNorFlash is also NorFlash, so you can already use the current adapter for all flashes. It might allow for a more efficient implementation (if writing to a range that's all 0xFF no need to erase first), but we can always add that later.
What's the usecase for Region and OverlapIterator now that we've dropped support for multiregion flash?

No strong opinion on errors, we could leave it as it is now which is the same as embedded-hal, and revisit it later once it's revisited in embedded-hal?

Sounds good, that was exactly my point with postponing it

Maybe have the user pass a &mut [u8] and panic at runtime if it's too small

I think that sounds like a decent tradeoff, i'll see if i can make it work in an elegant way tomorrow.

Is the RmwMultiwriteNorFlashStorage really needed

Not necessarily. Personally i wont be needing it, but it sounded like @Sympatron could make use of it, as it does improve the worst-case performance quite a bit.

What's the usecase for Region and OverlapIterator now that we've dropped support for multiregion flash?

Good point! I think they are leftovers from the past.. I'll remove them if they are not needed.

I agree with @Dirbaio about the errors.

Maybe have the user pass a &mut [u8] and panic at runtime if it's too small

This might be a good idea, but I don't quite see how to get there... Wouldn't you either have to modify the trait or let the storage own the buffer (i.e. provide one with new())?
I think RmwMultiwriteNorFlashStorage is fine for now. It's not ideal, but I can't think of a better one.

let the storage own the buffer (i.e. provide one with new())?

Yes, I'd do that. It also opens the possibility of optimizations like coalescing multiple writes?
When writing load the page from flash into the buffer and apply the modifications but don't write it to flash yet. On next writes, if they're to the same page apply them to the buffer. If they're to other pages, write out the previous page first.
The downside is it'd need a flush() method to ensure the last write is actually written out...

Hmm, at first-hand we seem to run into a double mutable borrow at self.try_read(page.start, self.merge_buffer)?;

Shouldn't it do try_read on the inner NorFlash, not on self?

That would make sense yes :p Missing the obvious here!

@Dirbaio @Sympatron
Guess that should do it.
We might be able to get rid of the overlapIterator, but both Rmw implementations makes use of it, and is greatly simplified by it.
Maybe we could postpone that cleanup to a future PR if anyone wants to do it?
It could probably do with a bit more doc-comments scattered around, so i will se if i can get around to that.
One thing. Do you guys prefer address, or offset as argument names? I tend to lean towards offset given that we have agreed they are in the range (0..capacity()), and thus no langer is an actual address?

@Dirbaio @eldruin @Sympatron
I think this is ready for a final round of review, followed by a 0.1.0 release?

@Dirbaio Thanks for the great comments!
I will address them as soon as i get a moment of time ;)

I have extracted the Rmw implementations to their own PR #14.
@Dirbaio @Sympatron @eldruin
Can we merge and release the traits here?

@eldruin Good point.
I removed the heapless dependency entirely for this one, as it was only used in the Rmw implementations, and updated it to 0.7 in #14

Looks good to me. :+1:

@MathiasKoch I think it is good to go.


Allow Persistent Results

Results from the search can be made to persist after the blur event has been fired and focus from the input is lost.
This is helpful in a variety of situations where the on screen keyboard needs to be hidden or focus pulled elsewhere with the results from the search still visible.

Thanks for the PR!

No problem at all - i'm just glad my first PR experience was a nice one so thank you too!

Useful and I think it reduces the autocomplete billing per request !! waiting for release!! @bell-steven @haydncomley

@ezemgaray
This was completed and merged into master - should be available to use right now as long as you've pulled the last version I believe.

It hasn't been release on npm yet, I am waiting for another commit before releasing.

Sorry for the delay in getting this out.
Released as v2.3.0


Investigate feasibility of using an ECS (Entity Component System) for Structures

This suggestion was brought up in #714 as a way of getting more convenient access to StructureClass-specific functionality, rather than having to typecast to a specific Structure subclass.

I think we can add the ECS management functionality to StructureManager as a first step, with a test-function that uses it in various patterns to get a good feel what the syntax will look like.
We can then convert one structure type at a time in separate commits. See for instance this commit, which updates the Warehouse class to the prototype ECS. Would that be an acceptable granularity?
I'd suggest working in a branch until that it is in a non-frankenstein state. I'm still not convinced that the effort won't end up in the bin after hitting some unforeseen roadblock. We'll probably run into a bunch of issues along the way, such as how to best deal with the existing behavior of filling the storage capacity of Command Centers before filling any storage tanks. And I don't know how much benefit it will bring either, to be honest, since structure functionality in OPHD is mostly a tree and 90% of it could be expressed in a regular object-oriented design.
On the flip side, writing systems is fun, so it will at least have entertainment value even if it never gets used in the end.

Seems like a pretty positive attitude to approach the work.
In terms of commit granularity, I generally like things to be pretty granular. Perhaps a little more so than the commit you referenced, though that one was within reason. I noticed there were some renames mixed in with the code changes, which I usually like to do in separate commits. Renames can cause a lot of noise in the diff. Keeping diff noise to a minimum means the real changes stand out better. And for reference, I really don't mind commits (or even entire PRs) that consist of only a 1 character change to fix a typo in a comment.
The one restriction on granularity that I try to live by, is to not break up changes into separate commits so that the intermediate commits don't compile or pass unit tests. (So far OPHD doesn't have unit tests, only NAS2D does).
If there is some code cleanup you can do that would make the work easier, but doesn't require the work to be complete, I sometime make a separate PR for the prep-work. That might include renaming variables, fixing documentation, refactoring code to reduce code bulk, abstracting away parts of the API so future changes can be done while touching less code, and so on. Such a PR can reference the issue the prep-work was meant to help with, though it won't mark the issue with closes.

Hey guys, So generally speaking I like the ideas presented here. I sort of skimmed what's posted because I'm a bit burned out at the moment on code and need to take a short break (like a day or two, nothing major). Going to take some time this weekend to do some more work on things.
I'm a little hesitant to use pointers as keys -- mostly because I'm not sure how to implement that well. I'm not opposed I just fear creating a system that is needlessly complex. From the commit that doesn't look like this is going to be the case... quite the opposite, it looks like it will solve a lot of the complexity that already exists, particularly the casting. I never cared much for typecasting and yet the entire entity 'system' in place makes a lot of assumptions about what pointers to objects actually are which is prone to breaking. There ends up being a lot of special-case code as well, mostly for serialize/deserialize functions. something I've been wanting to eventually tackle.
You can see from the code that I tried three different approaches, none of which are well implemented and ends up just sort of being a mish mash of shitty code. It works, technically, but it's a chore to update and maintain since serialize/deserialize methods and responsibilities end up all over the place.
I generally like the idea of individual components being responsible for serializing/deserializing themselves... though I think I'm starting to get off topic. That's something that I suspect this sort of system will help with correcting down the line.

I've got something that I'm fairly happy with in my fork now (unfortunately entangled with conversions of some of the Structure subclasses into components - I'll disentangle that in a new branch).

A logical structure is identified by a structure key, which is represented with a new SKey class.
A new StructureComponent class is introduced that serves as base class for all components.
StructureManager tracks Structure and StructureComponent, and their relation to SKey.
There are new helper functions to obtain a specific StructureComponent subclass pointer/reference belonging to a given SKey.
There are new helper functions to iterate over all instances of specific StructureComponent subclasses.
There are new helper functions with identical syntax to iterate over all instances of specific Structure subclasses to ease transition.

SKey just wraps a Structure*, to allow quick access to common functionality. I think it makes most sense to use that pointer as key, but it's encapsulated to hide that internal detail. It can be replaced by something else without affecting more than a few locations.
StructureComponent doesn't really contain much - its most important feature is that it has a virtual destructor. I opted for storing the SKey in StructureComponent for convenience. It also has a structure() convenience function to get a reference to the Structure associated with the structure.
When creating a StructureComponent subclass, you must define a static constexpr ComponentTypeID componentTypeID = ...; in the subclass if it's supposed to be queriable/constructable.
When creating a structure, first create the Structure instance along with any StructureComponent subclasses it should have, and pass them to StructureManager::create to allocate an SKey and associate the various instances with it. This should all be done in a factory function, rather than in the constructor of a Structure subclass.
Like before, StructureManager owns the lifetime of structures. It keeps track of all the StructureComponent subclasses in maps. This requires dynamic lookup to obtain the right subclass table, similar to the existing StructureClassTable implementation. While that's not strictly necessary, it makes for less boilerplate than building something with compile-time known table locations for the individual component classes.
You can construct an SKey from a Structure* at any time. You obtain a component of an SKey using either GetComponent<SomeComponentType>(someKey) or TryGetComponent<SomeComponentType>(someKey) - the first gives a reference back (or fails dramatically) while the second gives back a pointer (or nullptr if the key didn't have the component). You can iterate over all instances of a component with GetComponents<SomeComponentType>().
GetComponents returns a wrapper object rather than the underlying storage container, hiding the fact that storage is in a std::map. It made it cleaner to write range-based for loops, which now look like this:
for (auto& componentRef : GetComponents<ComponentType>()) {...}
I added an emulation wrapper as well that allows you to use GetComponents with the existing Structure subclasses as well. It requires adding static constexpr StructureClass typeStructureClass = ... to the class you want to convert to the new syntax, but allows you to write code like:
for (auto& powerRef : GetComponents<PowerStructure>) {...}
A few trivial things should be added, such as template<typename T> T& StructureComponent::Get() and an equivalent TryGet to obtain one component from the reference of another. And some of the names can probably be improved. But overall I'm fairly satisfied with the system.
Where do we go from here? Can you create an ecs branch so that I can clean up an issue a series of bite-sized pull requests? Or do you want to discuss and refine the system some more before accepting any PRs? If you want to inspect the code in my fork, you should be looking at these three files: StructureComponent.h, StructureManager.h, and addStructure/removeStructure in StructureManager.cpp.

I'm not sure if I really followed what you wrote too well. Perhaps I'm a bit too tired to review effectively tonight.
From the first part I kind of got the sense you were still refining the idea.
From the later part I got the sense you're looking to start picking out parts of the changes into branches that are suitable for review and merging.
I'll have to look again tomorrow.

I think I have a pretty good grasp of what's been done here. I'll create an ECS branch as requested to let you submit PR's and commits to so we can make granular changes and refinements before pushing to master.

You know what, maybe we should invite @rmtoth to the Outpost Universe organization. Can work directly out of the main repository then, including creating branches. It also means we can collaborate on PRs without have to continually pull from either other's forks, and create PRs to update PRs. It'll also probably help with the Continuous Integration (CI) builds, which don't tend to run for PRs from forked repositories.

Thanks. Still orienting myself in the github workflow... is the idea that I create a WIP branch (or several) and directly push my proposed changes there? And then to create a PR from that WIP branch into the entityComponentSystem branch that Leeor created, so that we can review the changes in managable chunks?

That's the general idea. We usually break features down into smaller change sets but since this is effectively a rewrite of the structure system for the game I'd break it off into its own branch and work out of that one, merge in any changes that will inevitably get added to master, test and then merge. It's kind of a big set of changes so I think breaking it apart like this makes sense.
Also, agreed with the organization invite.

 The branches are still submitted for review using PRs. Just that the PR branch is in the same repository as the merge target (generally master).
You can start from the branch Leeor created if you want, though it's already a few commits behind master. Feel free to start a new branch if you want to be more up-to-date, or to rebase the old branch to bring it up to date. Updating the old branch may require a force push. You are allowed to force push to a branch, particularly if you're the only person working on it. Please never use a force push against master though, and be cautious about force pushing to a branch that someone else has based work off of.
When you push changes to a branch, the CI builds will pick up the changes and compile them for all platforms. You can see the build status on the PR preview page (before opening the PR). You can also see the build status after the PR is opened, but be aware any pushes to an open PR will send notifications to everyone working on the project. If you're testing stuff out and don't want to bother other people with notifications, it may be better to do it on a branch without an open PR, and use the PR preview page to check on the build status. I generally only open the PR when I'm done working and it's ready for review. If I need to test something after opening a PR, sometimes I'll branch off of the branch, and test using the new branch with no associated PR. When things work, I can then update the original branch to include the new commits using a git reset followed by a git push.
As an example, here's the preview for a branch with no open PR:
https://github.com/OutpostUniverse/OPHD/compare/master...updateCppStd
The preview gives a list of commits, followed by a diff of all the changes. You'll notice a red X next to the commit hash on the right side of the commit list. That indicates a failed build status. A yellow circle means it's building, and a green circle means the build has finished successfully. If you click on the icon you can see the status for each individual build, and follow the "Details" link to see the build logs or any error messages.

It probably won't be super obvious how to chunk up the work until you've got somewhat working results. It can help to learn how git rebase works so you can repackage experimental work into polished commits that follow a logical sequence. We might need to give some guidance on this. That would likely come after you've got something kind of working, and then we can discuss how to pick apart pieces of it that can be reviewed and merged in smaller chunks. I generally merge pieces directly to master. It seems the thinking on this one is the change set will necessarily be a large all or nothing change, hence a feature branch with small parts merged to the feature branch. I'm not sure that will actually be necessary though. I suspect we can merge small changes sets directly to master, without ever breaking master.

Now I see why you wanted the work to be done inside the Outpost Universe repo. I see that the change actually failed to build on Linux - I'll try to find the time to fix that during the weekend.

Yup. Continuous Integration really helps to identify potential build errors or mistakes made in the code and ensure that we're always pushing code to master that builds on all supported platforms.

I'm a little hesitant to use pointers as keys -- mostly because I'm not sure how to implement that well. I'm not opposed I just fear creating a system that is needlessly complex.

@ldicker83 I tried encapsulating the key in the SKey class. But I'd rather just ditch it and use Structure* as key directly to reduce the friction in hooking everything up, since most code already deals with Structure pointers. But I'd like to hear your thoughts about it - is there any particular complexity you foresee? @DanRStevens already suggested the key encapsulation is of little value.

I think I was concerned about writing pointers out to disk. I may have misunderstood something.
If you think it's a cleaner solution to use the pointers, by all means go ahead.


Add Linux Tutorials For Beginners in Hindi - M Prashant

What does this PR do?
Add resources
For resources
Description
A Free playlist for Linux concepts.
Why is this valuable (or not)?
This playlist is beginner-friendly and it shows both theoretical and practical implementation at the same time.
How do we know it's really free?
It's a free video playlist available on Youtube.
For book lists, is it a book? For course lists, is it a course? etc.
It is a video playlist course.
Checklist:

[x] Read our contributing guidelines.
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction).
[x] Used an informative name for this pull request.

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

resubmit starting with a fresh branch


ack manually by the the fn result

In the most MQ case, we just ack when there is no errors, but the  sdk v2 code does not transfer the ReceiverFn result context to MQ protocol (m *Message) Finish(err error) error method, so i add this pull request.
in my case:
// The ReceiverFn
fn := func(ctx context.Context, event cloudevents.Event) protocol.Result {
	// ack or nack by the event handler result
	err := doSomething(event)
	if err != nil {
		return protocol.ResultNACK
	}
	if err == IgnoreError {
		return protocol.ResultACK
	}
	return err
}
c.StartReceiver(ctx, fn)

in the message Finish function
// Finish marks if there is no error
func (m *Message) Finish(err error) error {
	if protocol.IsACK(err) {
		m.internal.Ack()
	} else {
		m.internal.Nack()
	}
	return nil
}

the full version of kafka implement: https://github.com/cloudevents/sdk-go/pull/462

@slinkydeveloper is this ok?
Is there any other reason why it cannot be ack when it is received?

Can you be more specific on why we need this patch? I don't get the problem honestly :smile:

Can you be more specific on why we need this patch? I don't get the problem honestly 😄

In most case, we can not lost message when the event handler have panic or some other errors.
In my case, i want ack by the the ReceiverFn result, if ReceiverFn has some error or panic do not ack.
but i review the code, find the code does not transfer the ReceiverFn result context to MQ protocol, so i add the code.
//more info:
https://github.com/cloudevents/sdk-go/issues/460

What puzzles me is: there is another protocol/MQ you're trying to implement which has Ack/Nack feature and request/response model? Because in case of HTTP, if the receiver function returns an error, this error is then propagated back (at least, in theory it should as far as i see from the code https://github.com/cloudevents/sdk-go/blob/master/v2/protocol/http/protocol.go#L242)

What puzzles me is: Is there another protocol/MQ you're trying to implement which has Ack/Nack feature and request/response model? Because in case of HTTP, if the receiver function returns an error, this error is then propagated back (at least, in theory it should as far as i see from the code https://github.com/cloudevents/sdk-go/blob/master/v2/protocol/http/protocol.go#L242)

I use kafka for cloudevents backend, the problems is also happened on google PubSub, it can not nack the event when Receiver handler have some error.
The http protocol does not have cache/retry middleware, so it may not suitable for some cases

in the google PubSub or kafka, it can not get the receive event result, because it does not have responder implement. and also, the responder strategy  is not suitable for "Only Sub Client" cases.
// Finish marks if there is no error
func (m *Message) Finish(err error) error {
	if protocol.IsACK(err) {
		m.internal.Ack()
	} else {
		m.internal.Nack()
	}
	return nil
}

FWIW, I fixed the pubsub nack problem in https://github.com/cloudevents/sdk-go/pull/430

FWIW, I fixed the pubsub nack problem in #430

No, it is not enough,  the recevier fn result is not returned to your message Finish function

No, it is not enough, the recevier fn result is not returned to your message Finish function

I see. This is fixing client.

@n3wscott @slinkydeveloper
refer to the https://github.com/cloudevents/sdk-go/pull/461
This can only be implemented if the execution ReceiverFn result be fed back.

Double checked now, LGTM

LGTM
Thanks for fixing this.


allow to define a custom beakerlib libraries location

It should be possible to define a beakerlib libraries storage of the same structure as a github.com/beakerlib as part of the prepare step.
This will allow to define downstream location for libraries which either cannot be upstreamed or their downstream versions if there's a specific internal reference, for example.
Using such configuration should be possible to define a list of locations with a fallback to the upstream (current) one.

Currently, there is a need to have an internal version of epel/epel library which would contain a reference to an internal epel9 yum repository until there's an official one.
library(rhel-system-roles/basic) is an upstream library but if a test which use the library is executed internally, the library also needs to define internal repositories where the ansible packages can be installed from.

The logic is: If I run tests on RHEL, the tests install packages from RHEL when they install some RPMS, not from Fedora, even if the tests are opensource and came from Fedora. The same tests would install packages from Fedora when running on Fedora. That's what one expects. The package names are relative w.r.t. some repository, which is implicit / was prepared for the environment.
In the same spirit, it will be often needed to use libraries specified by only their name relative to some (implicit) root. The root will be different depending on whether we are testing on Fedora, on RHEL, on CentOS, on CentOS Stream...
One reason is that the library will need to set up some specific repositories to provide additional packages so that the logic of the first paragraph continues to be valid even with non-default repositories, when those repositories are different for different distributions. (EPEL and Ansible fall in this category.) Probably there will be also other reasons when a library will want to do things differently on different systems, not in order to behave differently, but in order to behave in the same way from the user's point of view.
Of course, in many cases, one would not need a separate location for the library code, it would be enough to use the same code with differing parameters (such as the location of the repositories). Still, the question would be, where to store those parameters.


long double in structs, call/return inconsistency

Nested structs with long doubles (more generally: float types = 2 * XLEN > FLEN) and other zero-byte fields are in some cases passed in GPR pairs.  It'd be simpler if we could say that anything with a real long double field (in particular, not a zero-length array of long double) is forced to memory passing.

That would seem to make the calling convention more complicated, because it adds a special case.  But it seems likely to be higher performance.

I believe that the resolution to #6 makes this issue mostly moot.  Are we screwing up the passing of other kinds of zero-byte fields?

The problem here isn't with the zero-byte fields per se, it's that there are several ways to make a struct which is functionally equivalent to a long double and not all of them wind up marked TFmode.  This is indeed moot if we're getting rid of the long double exception.


Blog post about the use of jlink to produce a custom runtime (JRE)

First draft of a post that will help people understand how to use the jlink command to produce their own custom runtimes in lieu of Adoptium providing JREs for Temurin 17+.
It includes:

An explanation of why we Eclipse Temurin have chosen not to ship JREs with 17+ and a link to the (now closed) discussion issue which is still getting comments - we could ask people to still comment on there if they really feel strongly after reading this) discussion issue, but I'd rather not encourage it :-)
The basic command for producing a cut down version of the JDK (The command that was included in  https://github.com/adoptium/temurin-build/pull/2736
Further commands (unfortunately more complex as you have to expliticly specify module lists mbut I've given the examples for 17+35) to produce something equivalent to a JRE
Instructions on how to use jdeps to find out which module your application needs to provide a cut down runtime suitable for a specific application.
A list of the size savings at each point (This could be converted into a summary table at the end)

Note that I have not explicitly listed the sizes of the directories that would come out of the legacy-jre target in this article (those are typically larger than the jlinked ones) or the fact that the legacy-jre produced archives with the CDS .jsa files in lib/server by default, which the jlinked runtimes do not.
Potentially supercedes the banner proposal in https://github.com/adoptium/adoptium.net/pull/188
I had also considered adding some of this to the FAQ, but it might be simpler to just link to this blog once it's out...

Good should on being consistent with legacy JRE everywhere, especially since I've explained that the use of that phrase near the start. It gives the right impression for why we've chosen this path.

https://docs.microsoft.com/en-us/java/openjdk/java-jlink-runtimes
see the crypto FAQ section, maybe worth adding

Would java.crypto.ec not show in the jdeps output if it was required? The two main examples I've given in the blog (so excluding the Hello World one) would include jdk.crypto.ec so I'm a little unclear on the rationale for calling that one out separately.

Good should on being consistent with legacy JRE everywhere, especially since I've explained that the use of that phrase near the start. It gives the right impression for why we've chosen this path.

https://docs.microsoft.com/en-us/java/openjdk/java-jlink-runtimes
see the crypto FAQ section, maybe worth adding

Would java.crypto.ec not show in the jdeps output if it was required? The two main examples I've given in the blog (so excluding the Hello World one) would include jdk.crypto.ec so I'm a little unclear on the rationale for calling that one out separately.

This was the rear case where it's a runtime dependency pulled in lazily so I don't think jdeps picks it up (this is actually a bug)

Would java.crypto.ec not show in the jdeps output if it was required?
This was the rear case where it's a runtime dependency pulled in lazily so I don't think jdeps picks it up (this is actually a bug)

Thanks - I've added in this - if we get a concrete example we can add that to the blog later
WARNING: In some cases the cryptography modules may not get picked up by
jdeps. If your application uses encryption and you hit problems you may need
to add jdk.crypto.ec to the list of modules that you include.

A couple of style suggestions, and a few typos. A good overview, but I suspect we will still get the question about why the Temurin project doesn't (do this for me and) provide a JRE, associated images, installers, etc. like some other vendors continue to do.

Agreed (and thanks particularly for picking up on the slightly worrying amount of typos in this one!) I've committed all those changes. By putting this up we have a good solid document to point people to with simply cut & pastable examples and so it will avoid any confusion as to our current position on this but as you say won't necessarily stop people asking for them. I'm in two minds as to whether to encourage the solicitation of any views by linking to https://github.com/adoptium/temurin-build/issues/2683 which is what we've done in most previous discussions, but I've left it in so far as It does let people see some of the differing views on both sides which we had on this. Somewhat inevitably any subsequent comments on that (closed) issue likely be polarised from people who are missing the images, and not from those who agre that JREs are now legacy.

Seems pretty good. A few suggestions.

All accepted and merged - thanks!


Why does the CodeChecker doesnot skip the files that are defined in the "codecheckerskipfiles"?

I am using CodeChecker to analyze and check some C/C++ Projects, while the analyse and the reporting is working properly, Codechecker does not ignore the files that I wrote and defined in a file to be ignored.
the file which contains the files to be skipped is located at:
"/home/..../CodeChecker/codecheckerskipfiles"
After building the project through a "make" and "make all" command, I start analyzing with CodeChecker while ignoring the content of the file in the meantime and doing an output of the results:
CodeChecker analyze /home/e.../CodeChecker//compilation.json -i /home/.../CodeChecker/codecheckerskipfiles -o /.../CodeChecker/reports
the codecheckerskipfiles has 3 paths to be skipped: (I edited the paths into points):
-/home/..../SystemLinux/*
-/home/..../Header/json.hpp
-/usr/..../bits/atomic_base.h
I put - and * above at the start/end of the lines according to the configuration of the skipfile: https://codechecker.readthedocs.io/en/latest/analyzer/user_guide/#skip
All the paths in the analyzing command above are accurate.
and the codechecker.sh bash file has the following defined commands:
#!/bin/bash
CreateSkipFile() {
cat < $1
-$2/SystemLinux
-$2/src/Header/json.hpp
-/usr/include/c++/9/bits/atomic_base.h
EOF
}
codecheckToolPath="$HOME/tools/CodeChecker"
export PATH="$codecheckToolPath/build/CodeChecker/bin:$PATH"
Config="debugx86"
CodecheckerPath="CodeChecker"
RetPath=$PWD
mkdir -p $CodecheckerPath
cd $Config
make clean
CreateSkipFile $RetPath/$CodecheckerPath/codecheckerskipfiles $RetPath
source "$codecheckToolPath/venv/bin/activate"
CodeChecker log -b "make" -o $RetPath/$CodecheckerPath/compilation.json
CodeChecker analyze $RetPath/$CodecheckerPath/compilation.json --i $RetPath/$CodecheckerPath/codecheckerskipfiles -o $RetPath/$CodecheckerPath/reports
CodeChecker parse $RetPath/$CodecheckerPath/reports -e html -o $RetPath/$CodecheckerPath/reports_html
#firefox ./reports_html/index.html
cd $RetPath
The CodeChecker version is the following:
[INFO 2023-03-09 16:08] - CodeChecker analyzer version:
Kind                 | Version
Base package version | 6.21.0-rc
Package build date   | 2022-11-09T15:50
Git commit ID (hash) | f787140b2320885a63d10a325377c6d3999b2856
Git tag information  | 6.21
[WARNING 2023-03-09 16:08] - This version is only a release candidate! If you encounter any problems, please submit a bug report!
[INFO 2023-03-09 16:08] - CodeChecker web version:
Kind                                | Version
Base package version                | 6.21.0-rc
Package build date                  | 2022-11-09T15:50
Git commit ID (hash)                | f787140b2320885a63d10a325377c6d3999b2856
Git tag information                 | 6.21
Server supported Thrift API version | 6.51
Client Thrift API version           | 6.51

Header files are usually not self-contained and thus cannot be analysed by themselves. There isn't a compile command for them and the best someone can do is to guess what flags might be used throughout the entire project to analyse a header without a corresponding translation unit. Because this gets messy quickly, CodeChecker does not do that.
The skip file skips analyses of source files, not spawning an analyser process (clangsa or clang-tidy) for them. You can verify this with the --verbose debug_analyzer flag which will show each analyser process call.
If you want to ignore results from headers that is also possible with a skipfile but then the skipfile has to be applied when reports are consumed (used) and not when they're generated by an analysis.
Both parse and store should also take a -i argument. If you give the same good skipfile here, it will work. The reports contained in the skipped files are prevented from becoming emitted.

@whisperity is there any another way how I use the analyze command of CodeChecker while skipping the header and files that I mentioned in the file above?

You can't skip the analysis of a header because a header is never analysed as a single entity. Headers are always analysed in the context of a source file. Every source file is analysed once.
You can skip the reports from a header. It will make it silent and not show the warnings for you. So it's like the header was "skipped".
Use the same skip file just pass it to both analyze and parse.
Change these lines:
CodeChecker analyze $RetPath/$CodecheckerPath/compilation.json --i $RetPath/$CodecheckerPath/codecheckerskipfiles -o $RetPath/$CodecheckerPath/reports
CodeChecker parse $RetPath/$CodecheckerPath/reports -e html -o $RetPath/$CodecheckerPath/reports_html

to
CodeChecker analyze $RetPath/$CodecheckerPath/compilation.json --skip $RetPath/$CodecheckerPath/codecheckerskipfiles -o $RetPath/$CodecheckerPath/reports
CodeChecker parse $RetPath/$CodecheckerPath/reports -e html --skip $RetPath/$CodecheckerPath/codecheckerskipfiles -o $RetPath/$CodecheckerPath/reports_html

@vodorok @dkrupp It looks like the issue has been cleared for @Ramles97, but it might be worthwhile to upgrade the documentation of skipfiles to mention the fact that if you are using skipfiles you should use them BOTH for analyze and parse and store...


init action for release and publish package

pre release will package a pre release when any commit or pr push to the master branch.
release will package a tagged release when any commit or pr with tag was pushed to the master branch, and it will publish a npm package to npm registry.

LGTM


North Carolina Christmas days shift rules

At the time of writing, there's been no clear rules for the XMas days shift if Christmas Day falls on Sunday.
Using this page we can guess the shift rules for most of the configurations. But having december 25th falling in Sunday only happens in 2010 and 2021 2022. The quoted page archive on archive.org is not older that 2015, and the calendars go up to 2020.
I've searched for explicit rules starting from here: https://oshr.nc.gov/policies-forms/leave/holidays but the "Administrative Rule" documents lead to a 404 page/asset.
If anybody has a legal expertise on how we can compute the North Carolina rules for Xmas shift, please help.

Still can't do anything about this issue: the NC official pages go up to 2021, and Christmas falls on Sunday only in 2022.
Anyway, the lib is improved, since XMas day in 2021 happens on Saturday and this page offers insights that were surrounded by a warning in NorthCarolina class.


feat: replace tabbed navigation with separate pages (resolves #204)

After some testing we decided that tabbed navigation (ARIA tab pattern) doesn't scale well for entity, project and consultant pages. This PR replaces tabs with separate pages and secondary navigation for these pages.

[x] Replace entity page tabs with separate pages
[x] Replace project page tabs with separate pages
[x] Replace consultant page tabs with separate pages

Resolves #204.

Regarding the secondary navigation label. I'm not sure it's clear enough to only label it after the heading. Although I'm struggling to think of something that captures all the information that can be navigated to. Might be worth checking in with @lliskovoi and/or @cherylhjli to see if they have any better suggestions.
Also the main navigation seems to be missing a label.

Regarding the secondary navigation label. I'm not sure it's clear enough to only label it after the heading. Although I'm struggling to think of something that captures all the information that can be navigated to. Might be worth checking in with @lliskovoi and/or @cherylhjli to see if they have any better suggestions.
Also the main navigation seems to be missing a label.

I've added "main menu" to the primary navigation. In terms of labelling the secondary menu my thinking was that since it will be announced as a navigation region, something like "Justin Obara navigation" or "Inclusive Design Research Centre navigation" would work well to clarify that you are navigating sections within those areas.


More 'pins' topics

add analog read/write topics. Might expand these as I keep going.

@ganicke,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Fix RAM size in fabric8 add-on usage guide

The RAM size as mentioned in fabric8 usage guide is 5 GB and the command below
$ minishift start --memory=5000 --cpus=5 --disk-size=50g

uses 5000 which get printed as 4GB as per new pre-flight startup logs.
$ minishift start --memory 5000 --cpus=5 --disk-size=40g
-- Installing default add-ons ... OK
-- Checking if KVM driver is installed ...
   Driver is available at /usr/local/bin/docker-machine-driver-kvm ... OK
-- Starting local OpenShift cluster using 'kvm' hypervisor ...
-- Minishift VM will be configured with ...
   Memory:    4 GB
   vCPUs :    5
   Disk size: 40 GB

Merged via pull request #21


operator-sdk link in https://operatorhub.io/getting-started  leads to 404 GitHub page

Describe the bug
operator-sdk link leads to 404 page in github
What did you do?
I opened https://operatorhub.io/, clicked on "Contribute" > "Create an Operator with SDK". From the page I clicked on the link operator-sdk
What did you expect to see?
Code for the operator-sdk
What did you see instead?
I saw an 404 GitHub page
Additional context
N/A

I see this for other links too.
operator-sdk leads to https://github.com/k8s-operatorhub/operator-sdk, which doesn't exist.


urgent-update

Flutter API is broken on native devices

:tada: This PR is included in version 1.24.0 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Possible issue with filters not working with Langchainrb and Pinecone (serverless)

Hello. I'm guessing I am just doing something incorrectly here, but in the case of the remote possibility that there's an underlying issues with langchainrb, thought I'd post this here.
I've distilled down our code to the basics here. At the core, we are just trying to load a legislation's bill text into Pinecone, then pass that context to Chat GPT and generate a summary of the legislation. It seems the filtering is not working. Sometimes langchain returns a summary that has nothing to do with the filtered context provided, and instead clearly is getting context from another text that has been loaded into Pinecone. Other times, langchain says the bill's "content and implications are not provided in the context." We are using Pinecone's serverless feature (in case that makes a difference).
An example service object that loads the data into Pinecone:
class PineconeService

  def load_into_pinecone
    client.add_texts(
      ids: [123],
      texts: [bill_text],
      metadata: metadata
    )
  end

  # Full bill text omitted here for the sake of brevity. But in testing, we fully load it.
  def bill_text
    "Senate File 19 - Introduced SENATE FILE 19 An Act regarding donated leave by state employees ..."
  end

  def metadata
    { id: 123,
      title: "Legislation text for bill SF19",
      bill_number: "SF19",
    }
  end

  def client
    @client ||= Langchain::Vectorsearch::Pinecone.new(
      api_key: ENV['PINECONE_API_KEY'],
      index_name: "ia-development",
      environment: "us-east-1-aws",
      llm: llm
    )
  end

  def llm
    @llm ||= Langchain::LLM::OpenAI.new(api_key: ENV["OPENAI_ACCESS_TOKEN"])
  end

end

And then the Langchain service which prompts langchain to provide the bill summary:
class LangchainService

  def process_bill
    client.ask(question: prompt, filter: pinecone_filter)
  end

  def prompt
    "You are an expert at summarizing legislation. Please summarize the legislation in the provided context."
  end

  def pinecone_filter
    { bill_number: bill.bill_number }
  end

  def client
    @client ||= Langchain::Vectorsearch::Pinecone.new(
      api_key: ENV['PINECONE_API_KEY'],
      index_name: "ia-development",
      environment: "us-east-1-aws",
      llm: llm
    )
  end

  def llm
    llm_options = { completion_model_name: "gpt-4-1106-preview", chat_completion_model_name: "gpt-4-1106-preview" }
    @llm ||= Langchain::LLM::OpenAI.new(api_key: ENV["OPENAI_ACCESS_TOKEN"], default_options: llm_options)
  end

end

Any pointers in the right direction would be greatly appreciated!

I think it has something to do with not chunking the text correctly before submitting it to Pinecone. I'll close this ticket if I figure it out on my own!

I'm guessing this isn't a langchainrb-related issue, since no one else has reported it before. I'm going to go ahead and close this.


Panic raised when jvm.dll not found

Crate j4rs panics on this line if JAVA_HOME environment variable is not set correctly or jvm.dll is not found from the path set as JAVA_HOME.
thread 'main' panicked at 'Could find the jvm dynamic library: JavaLocatorError { description: "Java is not installed or not added in the system PATH" }', C:\Users\Arttu\.cargo\registry\src\github.com-1ecc6299db9ec823\j4rs-0.13.0\src\api_tweaks\generic.rs:41:38
tmc-langs-rust calls it on plugins/java/src/lib.rs line 115

Thanks, this was previously taken care of by catching it in the langs CLI but I forgot to reconsider it when langs started being used as a library as well.


[Feature Request] Setting for changing localstack port

Currently, it is only possible to change the localstack host by setting LOCALSTACK_HOST.
Sometimes it is also required to change the default port. Can it be added?

Thanks for reporting @rostanin . You can customize the port number by setting the EDGE_PORT environment variable.
This CLI library uses the localstack-client Python module under the covers, which provides this configuration here: https://github.com/localstack/localstack-python-client/blob/master/localstack_client/config.py#L5-L6
Please let us know if there are any issues. Thanks!


Lambda environment validator prevents the use of the TZ variable

The environment variable validator lists TZ as a reserved variable and so raises a ValueError if you try to use it in a template: https://github.com/cloudtools/troposphere/blob/1de57d3e0d3b6d6561bd9c349011f3ee6ac1f363/troposphere/validators/awslambda.py#L72
The TZ variable is unreserved as documented here: https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html
I've confirmed that creating a stack with the TZ variable set does not produce any CloudFormation or Lambda errors.

Hmmm, must have changed it at some point. Fixed via 40028ad
Thanks for the issue.


Eng 933 update nav bar color scheme

Describe your changes and why you are making these changes
Update the color scheme for the nav bar. (https://www.figma.com/file/Qz2IiYJ4NAaDHojOf2YoTm/UI-V2-Screens?node-id=579%3A24342)
Related issue number (if any)
Eng 933
Loom demo (if any)
https://user-images.githubusercontent.com/30596854/194128007-5b710d87-7bed-4e05-b85b-3ae957e8f292.mov
Checklist before requesting a review

[x] I have created a descriptive PR title. The PR title should complete the sentence "This PR...".
[x] I have performed a self-review of my code.
[x] I have included a small demo of the changes. For the UI, this would be a screenshot or a Loom video.
[n/a] If this is a new feature, I have added unit tests and integration tests.
[n/a] I have run the integration tests locally and they are passing.
[x] I have run the linter script locally (See python3 scripts/run_linters.py -h for usage).
[x] All features on the UI continue to work correctly.
[x] Added one of the following CI labels:

run_integration_test: Runs integration tests
skip_integration_test: Skips integration tests (Should be used when changes are ONLY documentation/UI)

Nice! This is part of the task, the other part here would be to update the width and logo of the side bar.
I think we can address the sizing and logo updates in another PR though.


Support for Simplified Chinese

Describe the feature
Although there is an option to switch to Simplified Chinese on the right side, there is still a significant amount of English on the page. Default options, descriptions, and other elements are still in English, and I hope they can be changed to Chinese.

I don't know what the differences are in the pictures
I just listed some English descriptions that I hope can be seen on the webpage and would like them to be translated into Chinese when switching the language to Chinese.
Additional context
No response
Participation

[ ] I am willing to submit a pull request for this feature.

Thanks! We will add more Chinese translations soon.


Fixed keybinding json for backslash

Hello, this is a possible solution for issue #21657
Short description:
Check with regex whether backslash is found, if so add double backslash otherwise keybindings JSON will be invalid

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

Also, duplicate issue #17688

LGTM


bug: "lsp_doc_border" not work after commit 3cd84d4

Did you check docs and existing issues?

[X] I have read all the noice.nvim docs
[X] I have updated the plugin to the latest version before submitting this issue
[X] I have searched the existing issues of noice.nvim
[X] I have searched the existing issues of plugins related to this issue

Neovim version (nvim -v)
v0.10.3-dev-14+gfb5a0e28db
Operating system/version
Ubuntu 22.04
Describe the bug
After update to release v4.6.0, lsp_doc_border doesn't work anymore.
Just revert the commit 3cd84d4 makes lsp_doc_border config work as expected.
Steps To Reproduce

update noice to latest release
open a lua config file and show some lsp hover,
go to noice repo and revert the commit 3cd84d4
repeat step 2

Expected Behavior
Setting lsp_doc_border works again.
Repro
vim.env.LAZY_STDPATH = ".repro"
load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))()

require("lazy.minit").repro({
  spec = {
    {
      "folke/noice.nvim",
      opts = {
        lsp = {
          -- override markdown rendering so that **cmp** and other plugins use **Treesitter**
          override = {
            ["vim.lsp.util.convert_input_to_markdown_lines"] = true,
            ["vim.lsp.util.stylize_markdown"] = true,
            ["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
          },
          hover = {
            silent = true, -- set to true to not show a message if hover is not available
          },
        },
        presets = {
          long_message_to_split = true,
          lsp_doc_border = true,
        },
      },
    },
    -- add any other plugins here
  },
})

I can confirm:

How are you triggering hover? I really can't reproduce this...

I am using the default config for LazyVim, so K

I installed it ~2 years ago following these instructions, so I guess main?
The border problem started happening last week after I updated my dependencies with <leader>l and then S.
Just checked and I have no updates.
The changelog (<leader>L) says this:
# Changelog

## [12.44.1](https://github.com/LazyVim/LazyVim/compare/v12.44.0...v12.44.1) (2024-11-03)

### Bug Fixes

* **blink:** use release version ([7ebed53](https://github.com/LazyVim/LazyVim/commit/7ebed5349d49dd9996d61155bc12605871058ec1))
* **copilot:** properly process tab with copilot and blink. Fixes [#4692](https://github.com/LazyVim/LazyVim/issues/4692) ([fa37396](https://github.com/LazyVim/LazyVim/commit/fa3739678af494b8657d68ddc44bcc598f9bd00a))
* **java:** jdtls run with args ([#4689](https://github.com/LazyVim/LazyVim/issues/4689)) ([0403e80](https://github.com/LazyVim/LazyVim/commit/0403e80a8e6250130fe94af1034a6f0760a24ca8))

Must really be something else, not idea what. The repro below works as it should forme:
vim.env.LAZY_STDPATH = ".repro"
load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))()

require("lazy.minit").repro({
  spec = {
    {
      "neovim/nvim-lspconfig",
      config = function()
        require("lspconfig").lua_ls.setup({})
      end,
    },
    {
      "folke/noice.nvim",
      opts = {
        lsp = {
          -- override markdown rendering so that **cmp** and other plugins use **Treesitter**
          override = {
            ["vim.lsp.util.convert_input_to_markdown_lines"] = true,
            ["vim.lsp.util.stylize_markdown"] = true,
            ["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
          },
          hover = {
            silent = true, -- set to true to not show a message if hover is not available
          },
        },
        presets = {
          long_message_to_split = true,
          lsp_doc_border = true,
        },
      },
    },
    -- add any other plugins here
  },
})

Indeed it was something else. I tried disabling all my plugins and then enabling them one by one. I narrowed it down to this line:
  {
    "neovim/nvim-lspconfig",
    init = function()
      local keys = require("lazyvim.plugins.lsp.keymaps").get() -- <- THIS LINE

      keys[#keys + 1] = {
        "gk",
        function()
          vim.diagnostic.goto_prev({ float = { border = "rounded" } })
        end,
        noremap = true,
        silent = true,
        desc = "Go to previous diagnostic",
      }

      keys[#keys + 1] = {
        "gj",
        function()
          vim.diagnostic.goto_next({ float = { border = "rounded" } })
        end,
        noremap = true,
        silent = true,
        desc = "Go to next diagnostic",
      }

      keys[#keys + 1] = {
        "ga",
        vim.lsp.buf.code_action,
        noremap = true,
        silent = true,
        desc = "Code Action",
        mode = { "n", "v" },
        has = "codeAction",
      }
    end,
    opts = {
      -- ...
      },
    },
  },

When I remove it (together with the code that depends on it), the border comes back. Also removing the mapings one by one didn't bring back the border, so this makes me think the marked line is the issue.
For reference I followed the instructions here

Thats your problem.
Since a recent change in NEovim, Noice has to override things like vim.lsp.buf.hover.
Since you're calling that in init, you won't get the correct methods.
Just pushed an update to LazyVim that works around this

Thank you very much! I will be waiting for the next LazyVim release then.

Can confirm border works on hover now after commit 7616816 in LazyVim which changes the hover keymap from:
{ "K", vim.lsp.buf.hover, desc = "Hover" },

to
{ "K", function() return vim.lsp.buf.hover() end, desc = "Hover" },

Thanks for the help!


Login and viewing transcripts

To recreate:

Get a link for a transcript. In my testing I used a Telegram transcript, but shouldn't matter.
Log out of OCS.
You can still view the transcript even though you're not logged in. Expected behaviour: it should fail.

This doesn't happen in incognito mode, so it's something about having been logged in at some point? I don't know.
My first guess would be to add:
@permission_required("experiments.XXX", raise_exception=True)

(where XXX is the ChatViewer permission) as a decorator for:
https://github.com/dimagi/open-chat-studio/blob/4346dd8030b9925ca712b52566ffbb513d0f16bc/apps/experiments/views/experiment.py#L669

This view actually needs to be accessible because it's shown to users at the end of a session. It handles the survey and then shows them the session review page.

Oh, that's a good point. That only applies to anonymous web sessions through the public link, right? If we're using Telegram we'd never see it. And if we're using web for logged in users only, we wouldn't have that problem.
I think we're going to need a feature to turn that off and make this view not-publicly-accessible for some of our IRB-approved research work.

We could disable based on the channel ie. only enable for web channel. We could also use a cookie when a participant starts a chat and use to to permit review.


Add title for footer links that open in a new tab

This issue has been raised by an accessibility audit on an app using react-dsfr.
The 4 hardcoded links in the footer to "legifrance.gouv.fr", "gouvernement.fr", "service-public.fr" and "data.gouv.fr" open in a new tab (taget="_blank").
They should bear titles like : "legifrance.gouv.fr - ouvre une nouvelle fenêtre"
This is not the case on our app and on the Footer component documentation
Should the Footer component be modified or should it be added by another script ?

Hi @slafayIGN,
Thanks for rising the issue
I guess the footer component should be modified in this instance.  I'll do it this week end.

Hi, I'm working on it

Sorry I forgot to address this.
Thank you for working on this. Your change LGTM, don't forget to open a PR!

Merged and available for versions >= v0.75.0 🚀
🙏


can-import for bit-tabs not at the top of the file

In the PMO guide:

We usually like to keep all imports at the top of the template so it's easier to spot what the template depends on.


Cannot connect to existing Arc controller due to EULA

Azure Data Studio Version:
Version: 1.25.0-insider (user setup)
Commit: c7cca5afea12f977e66f0d078222ca95394b2f79
Date: 2020-11-19T08:39:47.479Z
VS Code: 1.48.0
Electron: 9.3.0
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.19042

Steps to Reproduce:

Deploy new Arc cluster with azdata (was using Windows MSI)
Connect to the controller from ADS from AZURE ARC CONTROLLERS section.

Got the following error, not sure how to proceed. azdata login works fine.
Could not connect to controller https://x.x.x.x:30080. Microsoft Privacy statement and Azure Data CLI license terms have not been accepted. Execute the command: Azure Data CLI: Accept EULA to accept EULA to enable the features that requires Azure Data CLI.

I believe we're caching the state in ADS for checking the EULA - but this doesn't take into account if a user uninstalls/resets azdata outside of ADS. Should look into whether we can be smarter about that.
@ranasaria Let me know if you finish your current work and have time to look at this - otherwise I'll plan on looking at this when I get a chance.

I haven't heard of anyone else running into this and there isn't really a good solution here without doing a lot of manual lookups - plus the error gives the instructions to fix it (run the command). So I'm going to close this for now and if it ends up being a bigger issue for people I can take another look.

@Charles-Gagnon - I'm running into the same issue:
Could not connect to controller arc. Microsoft Privacy statement and Azure Data CLI license terms have not been accepted. Execute the command: [Azure Data CLI: Accept EULA](command:azdata.acceptEula) to accept EULA to enable the features that requires Azure Data CLI.

I'm not exactly sure what to "do" with the command the error message tells you to run: azdata.acceptEula - since it's not valid (see below):

Logging into Data Controller from Powershell works fine (both normal Powershell, as well as Terminal embedded in Data Studio)
The command Data Studio recommends running doesn't work

Any thoughts on how to proceed from here to connect the Data Controller into Data Studio? (Perhaps Data Studio could have a checkmark that accepts the EULA to get past this)

@mdrakiburrahman try running the command through the command pallet (Ctrl + Shift + P)

What @0xbliang said is correct, when in Azure Data Studio "commands" refer to ADS commands which are access through the command palette.
So for this one you're looking for this command :

@0xbliang @Charles-Gagnon thanks gents, this resolved the issue.


added has_db_schema_validation flag

Description
I added a flag to the entire class that can enable or disable the db schema validation
Changes
Tests
Known Issues
Notes
@InnocentBug not sure if we need the flag added to the whole class or if we can just put it on the method instead as a parameter.
I think passing it as an argument is more preferable because it avoids the bulk, and encapsulates everything just in the method.
Checklist

[ ] My name is on the list of contributors (CONTRIBUTORS.md) in the pull request source branch.
[ ] I have updated the documentation to reflect my changes.

I don't love this implementation because it is either validating everything or nothing, but I think this is just a stepping stone for us to then use it in the next parts of the SDK and allow for turning OFF of some db schema validations and leave the essential ones ON


Prevent crash if the glTF doesn't have animations

Thanks.  This prevents a crash when the client never calls getAnimator.


Appstudio update mvp-test-component

Pipelines as Code configuration proposal

Pipelines as Code CI/mvp-test-component-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
8 seconds
init

✅ Succeeded
19 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
16 seconds
sanity-inspect-image

✅ Succeeded
15 seconds
deprecated-base-image-check

✅ Succeeded
18 seconds
clair-scan

✅ Succeeded
1 minute
clamav-scan

✅ Succeeded
12 seconds
sbom-json-check

✅ Succeeded
14 seconds
sanity-label-check

✅ Succeeded
14 seconds
sanity-optional-label-check

✅ Succeeded
5 seconds
show-summary


Version 1.8 not starting up on fresh install of Windows XP

I just installed Windows XP on a machine I have. Version is Windows XP SP1 x86, installed using a genuine copy of windows (I have a retail box I purchased a while back). I will try the previous version to see if it will run,
Summary: Version 1.8 simply just has the hourglass icon next to the cursor for about 30 seconds then goes away doing nothing.

So for anyone else having this issue I guess just use 1.7.1 seemed to work for me

Same here with Windows Server 2003 SP2, fresh install (EN). Installer won't start. Tested under the Administrator account.

I tried running 1.8 on Windows XP SP2 x86 and found it work. I guess maybe 1.8 has an issue on SP1?

The issue was likely that the CPU being used doesn't support SSE instructions, which was accidentally required by Legacy Update 1.8 - 1.9. Fixed in 1.10. If you still have problems running Legacy Update, please create a new issue.