[Docs]: Document how to exit out of the navigation loop due to JS on page load

Is there an existing issue for this?

[X] I have searched the existing issues

Documentation Link
https://docs.appsmith.com/core-concepts/writing-code/javascript-editor-beta#debugger-statements
Discord/slack/intercom Link
https://theappsmith.slack.com/archives/CGBPVEJ5C/p1666223396613649
Describe the problem
When a user tries to write a page load query that contains logic to navigate some other page. and if the logic is not conditional then there is no way for the user to change the logic, as going to that page will just navigate to another page.
This will lead to being stuck in a loop, and there is no way other than to export the app, modify the logic and import it, which is not a great experience.
Describe the improvement
We can add a section under Troubleshooting -> JS Errors specifying this navigation loop and a brief explanation on how to solve the issue and link to the debugger section in the docs - https://docs.appsmith.com/core-concepts/writing-code/javascript-editor-beta#debugger-statements
Why do you think this change is needed?
This would make the issue and the resolution more discoverable in case users face it.

@jnikhila can you look into this?

@danciaclara / @Rishabh-Rathod - As there is no error message displayed on the app for users to figure out that the query is stuck in the navigation loop, we won't have one to add in the troubleshooting section.
However, in the existing JS Errors page, we have a dedicated section for debugging, should we add these details there and create a short video explaining a resolution.
Could you please also help out with keywords that users are searching for? I could add the terms to the doc so that it becomes easily discoverable.

IMO it seems like an Application Error and as a user I would try to find a resolution here https://docs.appsmith.com/help-and-support/troubleshooting-guide/application-errors#page-access-error
Keywords - navigateTo , onPageLoad function, page not accessible, can't route to page

@jnikhila No, the user won't see any error for such cases.
If a user adds logic to navigate to another page on the load of the page.

Appsmith works as expected and hence no error.
but the user will not be able to access that page.

if trying to find help in docs, IMO page-access-error would be the closest title to the problem user is facing.
My suggestion is to maybe add a new sub-section in application-errors close to page-access-error.

I understand where you are coming from, and I feel that the page access error will be an appropriate place to document this. I guess we can add a subsection to Page Access Error
Page access error
.
.
.
Unable to access page
You added a navigateTo logic in your JS object and enabled the JS object by binding it to the on page load  ......
Something like the above. Your thoughts? CC: @danciaclara

This is an issue that is encountered when someone writes JS functions that run on page load and end up getting stuck due to navigateTo action. How about instead of under 'Page access error', we add a new section called 'Infinite loop'  under JS errors and put this content there? In this case, I'm pretty certain users know it is because of their JS function that they are stuck in that loop and they need to know how to exit out of it. so they will most likely search under JS errors.

It makes sense. @Rishabh-Rathod - Your thoughts??
P.S. - We just won't have a screenshot to add to it which I guess is okay as there is no error message shown to the user.

It's fine not to have a screenshot. The infinite loop issue can occur due to any reason. NavigateTo is probably just one instance. it could also happen to opening modals, for example. Our main aim here to let them know how to exit out of that loop in case they a function running on page load


Example doesn't explain the use of "set accessor "

This example is a part of explanation on Expression body definitions at https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties. This example explains the use of "get accessor" but ignore the use of "set accessor". Modified code to show the use of "set accessor" also.
Title
On the title describe
what you've fixed (or created) with this Pull Request (PR).
Summary
Insert a short (one or two sentence) summary here.
Fixes #Issue_Number

Note: The "Fixes #nnn" syntax in the PR description causes
GitHub to automatically close the issue when this PR is merged.
Remove that line if you don't have issues associated with this
PR. Click on the Guidelines for Contributing link above for details.

Details
Explain your changes, and why you made them. If that
information is already available in the issue referenced
above, just referencing the issue is preferred to copying
the text.
This may not be necessary depending on the scope of the PR
changes. For example, "fix typo in introduction.md" is
sufficient to describe that PR.
Suggested Reviewers
If you know who should review this, use '@' to request a review.

Thanks for your contribution, @srikarplus, but your change is unrelated to set accessors or to expression-bodied property definitions.  You've only changed the constructor to assign an argument to a property rather than directly to the property's backing store, which is slightly less performant.
I'm going to close this PR, but please feel free to respond if you disagree.


Update documentation for recent changes - more ${Property} support

A number of commands were updated to add more support for ${Property} in parameters.  The documentation needs to be updated.

Close the issue.


Update attribute component types, and remove sampler name properties

Remove sampler name property to be consistant with glTF validator.
Update accessors referenced by JOINTS_0 and WEIGHTS_0 attributes to use correct component types.

The number of joints that influence one vertex is limited to 4, so referenced accessors must have VEC4 type and following component formats:
JOINTS_0: UNSIGNED_BYTE or UNSIGNED_SHORT
WEIGHTS_0: FLOAT, or normalized UNSIGNED_BYTE, or normalized UNSIGNED_SHORT

Rigged simple is looking good - just check out https://github.com/AnalyticalGraphicsInc/gltf-pipeline/pull/406#discussion_r206230263

Thanks @lilleyse, fixed, see https://github.com/AnalyticalGraphicsInc/gltf-pipeline/pull/406#discussion_r206295982

Thanks!


Change toolbar color to primary color

Summary:
According to guidelines by Google
Toolbar background color should be the primary color.
Statusbar background color should be primary Dark color.
Steps to reproduce:
Change toolbar background to primary color in toolbar.xml
Expected behavior:
Toolbar background color should be the primary color.
Observed behavior:
Toolbar background color is primary dark color.
Screen-shots:

Image 1->Before
Image 2->After

Sounds good! @ujjwalagrawal17 can you include a link to Google's guideline for reference. :)

It's the correct way to use colorPrimaryDark on status bar and colorPrimary on toolbar as suggested by @ujjwalagrawal17
@maskaravivek  you can find it in Google's Android studio developer manual here

<!--   color for the app bar and other primary UI elements -->
<color name="colorPrimary">#3F51B5</color>

<!--   a darker variant of the primary color, used for
       the status bar (on Android 5.0+) and contextual app bars -->
<color name="colorPrimaryDark">#303F9F</color>

<!--   a secondary color for controls like checkboxes and text fields -->
<color name="colorAccent">#FF4081</color>

Dropping our primary / dark blue colors into Google's material design Color Tool shows how the colors should be used visually.

how is primary dark color selected?

I had attached 2 combinations
Image 1 has our Primary color and Primary Dark color 2 shades darker than primary color
Image 2 has our Primark Dark color and primary color 2 shades lighter than primary dark color
Shades are selected from https://coolors.co/0c609c-0a4f80-2e5b87-00376d-685044
I want feedback from you so that we can change any one color.

@nicolas-raoul  @maskaravivek  what do you think?

@neslihanturan ?

Pinging @neslihanturan , as the current color scheme was created by her.

If I had to choose between Image 1 and Image 2 in your comment two days ago, I guess I would choose Image 2 :-)

Should I close this issue?


Watch fails when ignore_files contains parent directory name

Debugged this with @t-kelly and figured out that if ignore_files contains a directory name that can be found in the projects directory, it will ignore everything. For example, the project lives under ~/src/theme and config.yml contains:
development:
  ignored_files:
  - src

then the filewatcher ignores all files resulting in an empty watch list.
Two tasks at hand:

Have themekit report that you're watching an empty file list (would have been super useful here!)
Fix the ignore mechanism

CC @chrisbutcher

It might be wise to adopt a bit of gitignore's syntax, which considers files prefixed with / to be folders, and otherwise files.

I think it's probably not wrong, but confusing and unproductive. The expectation of @t-kelly (and mine) was that the filters apply only to what is within the project directory. I don't think we'll need a filter that applies to the entire project directory itself; that seems... counterproductive. :)
So while it's not wrong, at least we should give the users a helpful hint, and at best make it work more like they would expect it to.
As for the scenario of a folder and file called src, the git way would be to either specify the explicit path of the file to ignore path/to/src or you would have a separate gitignore file in the directory that contains the file.
Building file filtering mechanisms boils down to 1. build a list of things to include (and that could literally be everything in a given path) and 2. remove ignored stuff from this list (via glob/regex). Really powerful systems like Ant's Fileset via its PatternSet let you specify very explicitly a root for the fileset, includes via globs and excludes, in the same fashion.
I think we can draw some inspiration from this! :)

Sounds good to me

Just saw this! :+1:


Add a workflow for shipping signing certificates with SwiftPM

This allows shipping signing certificates with SwiftPM easily, by embedding them into the binary. This uses SwiftPM's new .embedInCode feature, but since we cannot use that in production at the moment, we use a dummy package to generate the code and check it in for now.

What's the purpose of empty.sh file here? It breaks our soundness.sh script.

@MaxDesiatov it is needed to be able to establish a target, we don't allow a target with only generated source files today

Would adding a license header to it to satisfy the soundness script be ok, or would you prefer me to add an exception to the script?


Implement Missing DxfLwPolyline.GetBoundingBox

Actually just a copy-paste from DxfPolyline calculation. Fixed a lot of things in my project.
Small suggestion: Implement DxfArc.TryCreateFromVertices(DxfLwPolylineVertex, DxfLwPolylineVertex, out var arc) to not create any temp objects

I implemented DxfArc.TryCreateFromVertices(DxfLwPolylineVertex, DxfLwPolylineVertex, out var arc) and extracted calculation into separate function. I then excluded any temp object construction in TryCreateFromVertices and NormalizedAngleDegree.
Need a review on this one

There must be a mistake in your test
https://github.com/ixmilia/dxf/blob/0b1166c5f476576f5ee401a98a673c8dbcad6d26/src/IxMilia.Dxf.Test/BoundingBoxTests.cs#L28-L47
You are processing 4 vertices, combined into Unclosed polyline, which gives this.

For this polyline, expected bounding box is (-2, -0.5) to (0, 0.5)
Your previous implementation of GetBouningBox didn't take IsClosed into account at all.

If I am correct, I will change the test respectfully to this case.

Good find!  It seems the issue I was worried about (open polyline with a non-zero bulge on the last vertex) was present all along.
I agree, the test should be updated with this:
 var expectedMin = new DxfPoint(-2.0, -0.5, 0);
-var expectedMax = new DxfPoint(+0.5, +0.5, 0);
+var expectedMax = new DxfPoint(0.0, +0.5, 0);
-var expectedSize = new DxfVector(2.5, 1.0, 0);
+var expectedSize = new DxfVector(2.0, 1.0, 0);


encoding/gob: Slice encoding is not symmetric

What version of Go are you using (go version)?
go version go1.10 linux/amd64

Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN="/home/rvolosatovs/.local/bin.go"
GOCACHE="/home/rvolosatovs/.local/cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/rvolosatovs"
GORACE=""
GOROOT="/nix/store/r7p21cmhq0jimq2f8c8y5sm2vqg2ap99-go-1.10/share/go"
GOTMPDIR=""
GOTOOLDIR="/nix/store/r7p21cmhq0jimq2f8c8y5sm2vqg2ap99-go-1.10/share/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build642040554=/tmp/go-build -gno-record-gcc-switches"

What did you do?
https://play.golang.org/p/ycEF5lDyE1p
Relevant part of the code:
for _, a := range [][]byte{
		nil,
		[]byte{},
		[]byte{42},
	} {
		var buf bytes.Buffer
		gob.NewEncoder(&buf).Encode(a)

		var b []byte
		gob.NewDecoder(&buf).Decode(&b)

		fmt.Println(reflect.DeepEqual(b, a))
	}

What did you expect to see?
true
true
true
What did you see instead?
true
false
true
Hence, zero-length slices are encoded in the same way as nil slices, which makes encoding non-symmetric.

Gob does not have a concept of nil in its data format, so this is working as designed.

But zero-length slice is not nil, right?
https://play.golang.org/p/aBW1WGw8RlV


Added import pandas to fix print_summary

Bug fix
Fix NameError: name 'pd' is not defined from .print_summary() method.

Hi @millengustavo! I actually just fixed this bug this morning, and released a new version with the fix in v0.23.3.


Email sent to student when comment is posted

[ ] chose email provider/third party email sender and integrate API into our code

[ ] research what FCC is using for email provider
[ ] possibly ask Quincy to piggyback off their email provider

[ ] email provider API key should be in environment variable
[ ] email sent to student when comment is posted
[ ] when student replies to email, email is sent to teacher

Good price by Sparkpost:
https://www.sparkpost.com/pricing/
https://github.com/sparkpost/node-sparkpost
reply-to header can be done by Sparkpost
https://developers.sparkpost.com/api/templates.html

reply_to	string	Email address used to compose the email’s Reply-To header	no	Substitution syntax is supported.


How about Azure Batch

[Enter feedback here]
Azure Batch seems to support private endpoint.
https://docs.microsoft.com/en-us/azure/batch/private-connectivity#:~:text=The Batch service offers the ability to create,addresses in a subnet within your virtual network.
But Azure Batch is not on the support matrix of this page.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b006a616-2f2f-8ecf-8b80-fd0a3cc62090
Version Independent ID: 92c54dc6-8ddf-b1f7-4a58-d61b8cd7fe25
Content: What is an Azure Private Endpoint?
Content Source: articles/private-link/private-endpoint-overview.md
Service: private-link
GitHub Login: @malopMSFT
Microsoft Alias: allensu

@yuharucan , thank you for your feedback. We have assigned this to the content owner/author for review.
@malopMSFT , could you please review this and update the doc accordingly?

@ivapplyr can you help including this service on our docs and share a PR

Ack. Will circle back with an updated PR :)

Batch is added to the table of supported services in availability page.
#please-close

Will update table.
#reassign:@asudbring


[vim9] unreachable code containing calls to undefined functions fails to compile

Describe the bug
Probaby not a bug, but still a problem for me. If functions contain calls to undefined functions (for example because they belong to a plugin that hasn't been loaded yet), the script fails to compile. How is one supposed to solve these situations? I've been using call('FuncName') instead of FuncName() but it surely harms runtime execution, doesn't it?
To Reproduce
Example script: https://gist.github.com/mg979/4f7ec50329b29705c829f2213cee1b15

Copy sl.vim in ~/.vim/plugin
Run vim --clean -c 'source ~/.vim/plugin/sl.vim'

You get an error that FugitiveHead doesn't exist, but that function is only really called if the fugitive plugin is loaded, if it's not, at runtime that line can't be reached.
Expected behavior
Not sure what it should be. I'd prefer if it were possible to include calls to functions that are still undefined at compile time.
Environment (please complete the following information):

VIM - Vi IMproved 8.2 (2019 Dec 12, compilato Aug 10 2021 01:18:22)
Patch incluse: 1-3322
Compilato da Gianmaria Bajo<EMAIL_ADDRESS>Versione gigante con GUI GTK2.

FWIW, I use call().  Alternatively, you can use exists_compiled() (provided by the patch 8.2.3314):
# before
git.branch = printf(' %s ', FugitiveHead(8))

# after
if exists_compiled('*FugitiveHead')
    git.branch = printf(' %s ', FugitiveHead(8))
endif

BTW, the help tag for exists_compiled() is wrong:
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 4e258c577..05c06ec7f 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -4539,7 +4539,7 @@ exists({expr})	The result is a Number, which is |TRUE| if {expr} is defined,
 			Varname()->exists()
 <

-exists_compiled({expr})						*exists()*
+exists_compiled({expr})					*exists_compiled()*
 		Like `exists()` but evaluated at compile time.  This is useful
 		to skip a block where a function is used that would otherwise
 		give an error: >

Thanks. So I made a small test and it seems exists_compiled() is much faster than call() so I'll settle with that.
vim9script

function TestFunc()
    return ''
endfunction

func VimOld()
    let a = ''
    for i in range(10000)
        if exists('*TestFunc')
            let a ..= TestFunc()
        endif
    endfor
    return ''
endfunc

def Comp(): string
    var a = ''
    for i in range(10000)
        if exists('*TestFunc')
            a ..= call('TestFunc', [])
        endif
    endfor
    return ''
enddef

def CompEx(): string
    var b = ''
    for i in range(10000)
        if exists_compiled('*TestFunc')
            b ..= TestFunc()
        endif
    endfor
    return ''
enddef

def NoTest(): string
    var c = ''
    for i in range(10000)
        c ..= TestFunc()
    endfor
    return ''
enddef

def TestExists()
    echo 'exists() working?' exists('*TestFunc')
    echo 'exists_compiled() working?' exists_compiled('*TestFunc')
enddef

echo repeat('-', 40)
TestExists()
echo "\n"

var start = reltime()
echo VimOld()
echo 'Vim old:           ' .. reltimestr(reltime(start))

start = reltime()
echo Comp()
echo 'call():            ' .. reltimestr(reltime(start))

start = reltime()
echo CompEx()
echo 'exists_compiled(): ' .. reltimestr(reltime(start))

start = reltime()
echo NoTest()
echo 'no exists():       ' .. reltimestr(reltime(start))

On a side note, this does not work:
def GitInfo(): void
    if !exists_compiled('*FugitiveHead') || exists('g:SessionLoad')
        return

    else
        ...
        git.branch = printf(' %s ', FugitiveHead(8))
    endif
enddef #}}}

but this works:
def GitInfo(): void
    if !exists_compiled('*FugitiveHead')
        return

    elseif !exists('g:SessionLoad')
        ...
        git.branch = printf(' %s ', FugitiveHead(8))
    endif
enddef #}}}

That is, with exists() and exists_compiled() in different lines.

I'm closing this since the latter is another thing.

The simple solution is to use exists() and call g:FugitiveHead().
The "g:" prefix tells Vim at compile time that it's a global function, which can be defined later.
Same for autoload functions.
Let me add a few examples to the help to make this clear:
Although global functions can be called without the "g:" prefix, they must exist
when compiled.  By adding the "g:" prefix the function can be defined later.
Example:
def CallPluginFunc()
if exists('g:loaded_plugin')
g:PluginFunc()
endif
enddef
If you would do it like this you get an error that "PluginFunc" does not
exist, even when "g:loaded_plugin" does not exist:
def CallPluginFunc()
if exists('g:loaded_plugin')
PluginFunc()   # Error - function not found
endif
enddef
You can use exists_compiled() to avoid the error, but then the function would
not be called, even when "g:loaded_plugin" is defined later:
def CallPluginFunc()
if exists_compiled('g:loaded_plugin')
PluginFunc()   # Function may never be called
endif
enddef

@brammool I see now, thank you very much. Definitely I shouldn't be using exists_compiled() in this case. Tested with g: and it's working now.


fix: add public base path (#1748)

Base is the public basic path for development or production environment services. It defaults to "/", is an absolute path, and is modified to "./" to be a relative path available for nginx proxy.

这个可以直接进入docker里去修改[vite.config.ts]这个文件吗？还是需要重新编译呢？不明白在哪里修改这个文件？

[vite.config.ts]It is a configuration file that needs to be compiled to take effect, waiting for Releases~

Hi @GenerQAQ , your fix seems been overwritten, can you take a look?


fix(security): vulnerabilities found in cactus-example-supply-chain-app

List of vulnerabilities found in cactus-example-supply-chain-app image during Azure Container scan.

VULNERABILITY ID
PACKAGE NAME
SEVERITY

CVE-2021-3807
ansi-regex
HIGH

CVE-2021-3807
ansi-regex
HIGH

CVE-2021-43138
async
HIGH

CVE-2022-22143
convict
HIGH

CVE-2020-8203
lodash
HIGH

CVE-2021-23337
lodash
HIGH

CVE-2022-24771
node-forge
HIGH

CVE-2022-24772
node-forge
HIGH

CVE-2021-23358
underscore
HIGH

Hi @petermetz Can you assign me on this one? thank you!

Here are the screenshots of my current issue/blocker

Lodash

Underscore

Hi @petermetz Can you assign me on this one? thank you!

@aldousalvarez Done, thank you!

Hello @petermetz While examining each vulnerabilities, both CVE-2021-23337 and CVE-2021-23358 was already fixed by PR #1816 and #1820. Upon investigation package<EMAIL_ADDRESS>at examples/cactus-example-supply-chain-backend is still using the web3-eea on its latest version in NPM https://www.npmjs.com/package/@hyperledger/cactus-plugin-ledger-connector-besu . What is the frequency of update for<EMAIL_ADDRESS>Update of the said version from the cactus base code will fix the said vulnerabilities above.
Here are the screenshots of my current issue/blocker

Lodash

Underscore

@aldousalvarez Oh, that's great, thank you for investigating! We will issue a 1.1 release soon which will then propagate the fixes to the containers as well. I assigned the task to you but at this point it's a no-op except for you having to make sure that this is closed with the issuance of the release 1.1.
So your responsibilities here are:

Wait for the 1.1.0 release and when it happens close this issue stating what happened and why (referring to your description above will help a lot)
Mark this issue dependent on that other issue we have for releasing v1.1.0 that I'll create in a second.

Depends on #2054

Also marked this as P3 because the vulnerabilities are on a test or example container that does not get used in production at all.

Hello @petermetz  After examining the remaining vulnerabilities. Below is the table of the proposed solution for the remaining vulnerabilities in the supply-chain-app

VULNERABILITY   ID
PACKAGE NAME
SOLUTION (version)
AFFECTED VERSION
PROPOSED SOLUTION

CVE-2021-3807
ansi-regex
6.0.1, 5.0.1, 4.1.1, 3.0.1
Affected versions     >= 6.0.0, < 6.0.1     >= 5.0.0, < 5.0.1     >= 4.0.0, < 4.1.1     >= 3.0.0, < 3.0.1
already the Solution   (version)   [<EMAIL_ADDRESS>

CVE-2021-3807
ansi-regex
6.0.1, 5.0.1, 4.1.1, 3.0.1
Affected versions     >= 6.0.0, < 6.0.1     >= 5.0.0, < 5.0.1     >= 4.0.0, < 4.1.1     >= 3.0.0, < 3.0.1
(can be fixed by angular supply   chain ticket)

CVE-2021-43138
async
3.2.2 / 2.6.4
Affected versions     >= 3.0.0, < 3.2.2     < 2.6.4
can be fixed by upgrading the   express-jwt by v6.1.2 on packages/cactus-cmd-api-server/package.json and   fabric-common v.2.2.13 on   packages/cactus-plugin-ledger-connector-fabric/package.json  [<EMAIL_ADDRESS>

CVE-2022-22143
convict
6.2.3
< 6.2.3
already the correct version   based on package.json of cactus-cmd-api-server (need to release<EMAIL_ADDRESS>

CVE-2020-8203
lodash
4.17.20
< 4.17.20
already done (need to release<EMAIL_ADDRESS>version of the   package)

CVE-2021-23337
lodash
4.17.21
< 4.17.21
already done (need to release<EMAIL_ADDRESS>version of the   package)

CVE-2022-24771
node-forge
1.3.0
< 1.3.0
already the correct version   based on package.json of cactus-cmd-api-server (need to release<EMAIL_ADDRESS>

CVE-2022-24772
node-forge
1.3.0
< 1.3.0
(can be fixed by angular supply   chain ticket)

CVE-2021-23358
underscore
1.12.1
>= 1.3.2, < 1.12.1
already done (need to release<EMAIL_ADDRESS>version of the   package)

ansi-regex

ansi-regex (tested and applied the upgrade angular in supply chain changes)

async
a. upgrade on express-jwt 6.1.2

b. upgrade on fabric-common 2.2.13

convict

node-forge

node-forge (tested and applied the upgrade angular in supply chain changes)


Add a health overlay for eye equipment

About the PR
Add a health overlay for eye equipment
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame

Changelog
:cl:

add: added an overlay for the diagnostic hud that displays relative health for inorganics
add: added an overlay for the medical hud that displays relative health for biologicals

that icon looking bad, and what differences between #17807 ?

it's even harder to read the current health status than on the other PR

that icon looking bad

it's even harder to read the current health status than on the other PR

Thanks, I hate it too

what differences between #17807 ?

That one allows you to do this:

for the icon, have you considered just doing a super minimalist bar? not really having a large border around it at all? it might look a lot cleaner.

icon should be previous, but health line maybe bolder

for the icon, have you considered just doing a super minimalist bar? not really having a large border around it at all? it might look a lot cleaner.

Nah I'm not going to step into the domain of aesthetics.

icon should be previous, but health line maybe bolder

What do you mean "bolder"?

icon should be previous, but health line maybe bolder

This?

yeah

yeah

I thought 3 px was a little much so I did 2 px. Removed the center px from the icon to make it fit.

(update gif in PR desc)

icons needed (like in ss13), and it would be good if crit hp was not shown, just red line

it would be good if crit hp was not shown, just red line

That looks confusing tbh.

icons needed (like in ss13)

Not gonna scope creep this into the PR. I don't see a need for the icons.

See https://github.com/space-wizards/space-station-14/pull/13917 design. I think only wounds will be visible to characters after that, no health bars or e.g. 5 burn 10 brute damage in health scanner. Someone else could say better.

This looks like a 5 month old draft PR that's only half done. The stated to do list doesn't even mention removing the damage container from mobs. It seems entirely irrelevant.

I don't know what the design would be for a medical hud that scans at distance (health overlay) or even if one would exist. Like if instead of a bar showing % health, wound icons may be displayed at distance on a medical hud of item worn on eyes. I'm sure they'd like help with the unchecked boxes on that PR which include medical items. Others could say better than me.

Just swap it over for consciousness then. If that gets put in charge of mobstate then it's an easy fix. Not sure how that would work for sillycons and if they'd need their own logic or if they can just fix it in MobThresholdSystem to keep it abstracted.
Either way:

still doesn't seem relevant
this PR adds a feature to how the game works right now

Does it show health bars to mobs in crates or closets like that? If it is then it would break hiding in them and also stealth cardboard box since it uses the same system that crates uses to contain items.

Does it show health bars for mobs in crates or closets? If it is then it would break hiding in them and also stealth cardboard box since it uses the same system that crates uses to contain items.

Yup, let me get on fixing that.

Does it show health bars for mobs in crates or closets? If it is then it would break hiding in them and also stealth cardboard box since it uses the same system that crates uses to contain items.

 Yup, let me get on fixing that.

This could REALLY probably use the visuals from SS13. I feel like this is going to be very confusing since do_afters are shaped the same and look nearly identical.

so a 3 px bar, the top one slightly darker and leaving 8px space on either side?

This could REALLY probably use the visuals from SS13. I feel like this is going to be very confusing since do_afters are shaped the same and look nearly identical.

Done

I can add this in the top right corner still:

I can add this in the top right corner still:

if you do, do it through status icons with priority 1 so it's always placed correctly. (you just need to subscribe to GetStatusIconsEvent and either add the prototype or make a new instance.

if you do, do it through status icons with priority 1 so it's always placed correctly. (you just need to subscribe to GetStatusIconsEvent and either add the prototype or make a new instance.

Is this system used anywhere?

if you do, do it through status icons with priority 1 so it's always placed correctly. (you just need to subscribe to GetStatusIconsEvent and either add the prototype or make a new instance.

Is this system used anywhere?

Not right now. It just raises that event on valid entities and systems can choose to add icons to them. I assume you'll just use whatever logic you have for picking what entities have health bars and then just create a small prototype (There are examples in the StatusIcons folder)

Not right now. It just raises that event on valid entities and systems can choose to add icons to them. I assume you'll just use whatever logic you have for picking what entities have health bars and then just create a small prototype (There are examples in the StatusIcons folder)

Thanks I'll have a look. This will have to be separate from the EntityHealthBarOverlay class.

Not right now. It just raises that event on valid entities and systems can choose to add icons to them. I assume you'll just use whatever logic you have for picking what entities have health bars and then just create a small prototype (There are examples in the StatusIcons folder)

Thanks for the help on discord pal, updated GIF in PR desc.

I think we need to get a system right away that renders both health bars and profession icons for sat, and it can also be used to render icons for Nar'si revolution/cult mode, if you can do that.

the system for profession icons exists: it's what this pr uses.

the system for profession icons exists: it's what this pr uses.

But why isn't it used for sec hud then?

And yes, in complete darkness this hud is shown?

And yes, in complete darkness this hud is shown?

The icons darken in darkness, the healthbars do not.

Added job icons for the security hud

The icons darken in darkness, the healthbars do not.
Fixed

Not updating the GIF again unless someone wants to merge this but the health icons are shown in the top right now.
If someone has the .rsi for sec-health hud glasses I can add them.

review in discord from ElectroSR:

at a glance:
Should definitely sparate jobs & health into separate PRs
ClothingGrantComponentComponent is very smelly. Having something like that might be useful eventually, but it would require a bunch more work and you're probably better off not using it.
e.g.:

what happens if they already have the component
what happens if they equip two pieces of equipment that both grant the same component
what happens if they lose or gain the component while already wearing the equipment

you're generally better of just leaving the component on the clothing rather than adding it to the wearer
ComponentRegistry should be avoided unless its necessary or its is very unlikely ever be able to cause issues
but component-on-clothing will probably be misused frequently as a shortcut instead of properly adding functionallity to clothing
e.g., I used it in the modular grenade stuff, and even there it feels pretty icky
but at least its less likely to be accidentally misused there
because grenades are much simpler than mobs/players

I will be working on this later.

Maybe do #18054 first, since that will implement rendering the icons on the correct side. Merging either one will likely also cause merge conflicts with the other one but oh well 🤷♂

Thanks, I'll get to this on Thursday.

NV health hud (trollface)

NV health hud (trollface)

What

Why is a health bar the only option? (I mean in terms of tweaking how the hud works). Why should someone else be able to glance at you and tell what your health is in greater detail than you can? It would work much better if the health was just displayed as a job icon-like visual that shows green, yellow, or red depending on your damage (maybe some kind of inner symbol for the icon so it isn't just a colored square). Health analyzers are for in-depth checkups and the hud should just be for quickly identifying people in need (more like the onion glasses and beer goggles).


chore: upgrade prettier

Follow up on https://github.com/netlify/build/pull/1972

Looking at why this is failing on windows


Layers shader slow sometimes

Sometimes it is painfully slow to scroll between slices in lesson 04 or examples label maps or image compare.
Just rebuilding AMI fixes it sometimes...

Slow build: https://github.com/FNNDSC/ami/commit/b9265177da3714350f303bee3d87f77ce1093e7e
Fast build: https://github.com/FNNDSC/ami/commit/24f64c7d206a2c0c49499397811431d24f24f962

Solution is to get rid of GLSLIFY

Could have been related to the way we flush the existing layer 1 texture on scroll.

Fixed with new shader build system.