Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a color by regex feature that matches the experiment name. #6803

Closed
wants to merge 63 commits into from

Conversation

AnuarTB
Copy link
Contributor

@AnuarTB AnuarTB commented Mar 21, 2024

Motivation for features / changes

Users want to color runs by the regex string of the corresponding to runs experiment names.

Technical description of changes

  • Added new GroupBy type, REGEX_BY_EXP.
  • Added a dropdown in dialog window, so users could select between regex for run name or experiment name.

Screenshots of UI changes (or N/A)

N/A since internal change.

Detailed steps to verify changes work correctly (as executed by you)

  • Run tensorboard.corp server.
  • Click on color grouping icon and select Regex.
  • Select Experiment Name in dropdown.

Alternate designs / implementations considered (or N/A)

N/A

AnuarTB and others added 30 commits March 21, 2024 13:23
## Motivation for features / changes
Fix a typo `darkModeEanbled` -> `darkModeEnabled `
## Technical description of changes
Fixing a typo made in code. Although it doesn't change functionality, it
keeps the code health.
## Screenshots of UI changes (or N/A)
N/A
## Detailed steps to verify changes work correctly (as executed by you)
N/A
## Alternate designs / implementations considered (or N/A)
N/A
## Motivation for features / changes

Potential improvement to the build: reduce the binary size by ~5Mb

## Technical description of changes

Run `strip` on release build so that [whatever strip does to the binary]
is not shipped in the production build.

## Screenshots of UI changes (or N/A)

## Detailed steps to verify changes work correctly (as executed by you)

Run `cargo build --release`, with and without the change, to observe the
binary size (as tested on M1 Mac) reducing from 14Mb to 9.5Mb

## Alternate designs / implementations considered (or N/A)
tensorflow#6759 modified _keras_test.py to work with Keras 3 but it did not import
correctly into the internal repository. It was therefore reverted in
tensorflow#6767.

This changes the test to work both in the oss and internal repos.

Googlers, see cl/612511563 for sample import results.
The regex dialog "Save" button is rendered poorly internaly, dark text
on dark background.

The color of the button text was changed to 'inherit' in go/tbpr/6631.
It doesn't seem to have been necessary so I revert that particular
change here.

It means in OSS TensorBoard the button text color will be slightly
darker than previously. I didn't personally notice the difference but
internal screenshot tests show a slight difference. Googlers, see
cr/612557079.
We haven't updated this dependency on the bazel webtesting rules for a
while, and it looks like we need to do it to be able to also update our
reference to the rules_closure target, to unblock tensorflow#6721.

To be clear, this PR is a prerequisite to pin the rules_closure version
in a separate PR, which in turn will unblock tensorflow#6721. (Or at least that's
the expectation. It is yet to be confirmed that the rules_closure
version we want to pin is compatible with this one).

An attempt to use the versioned browsers provided by the
rules_webtesting dependency was created in tensorflow#6772, but some tests were
failing. It seems that some components or tests were written in a way
that depends on the specific browser (?), so to be able to update this
dependency, this continues to use the same browser version, only
updating the rules we use to define our testing browser, to be
compatible with a newer version of rules_webtesting.
We no longer surface Hparam-related Metric Values from the server in
Angular TensorBoard UI. We therefore remove the MetricSpec and
HparamAndMetricSpec types. The latter is replaced with just HparamSpec[]
where necessary.
Limit the number of hparams retrieved by default to 1000 for display in
Time Series. Print retrieval information: # of columns loaded and
whether there could be more.

This is to address performance issues with loading 1000s of hparams from
the backend and trying to render them all.

In a future PR we will add ability to "Load All" if user wants to
nonetheless load them all.

Screenshot (with default set to 2 instead of 1000):

![image](https://github.com/tensorflow/tensorboard/assets/17152369/b0f2c4e6-bda0-4ed7-bead-9f1ef6eaaca7)
…ensorflow#6781)

Add tooltips for hparam column names when the name does not match the
display name (using case-insentive comparison).
…tensorflow#6779)

Shows a 'differs' tag in the data table column selector if an hparam has
multiple values.

We start by adding generic support to the data table column selector for
"tags". Tags can be arbitrary strings.

Then, for each Hparam column, we calculate whether to include a
'differs' tag.

Light mode:

![image](https://github.com/tensorflow/tensorboard/assets/17152369/7c8110cd-ac9f-48e5-97f1-ff4c1b5bf8d4)

Dark mode:

![image](https://github.com/tensorflow/tensorboard/assets/17152369/59b3af5d-6990-483b-8a05-4c27c0c37182)

Internal Light mode:

![image](https://github.com/tensorflow/tensorboard/assets/17152369/1ada0711-724a-4e2a-80ab-452bc1f8cd02)

Internal Dark mode:

![image](https://github.com/tensorflow/tensorboard/assets/17152369/48c0321d-4db7-4244-b7b0-6fb249539d69)
The "to_proto" method on Starlark structs is deprecated and shouldn't be
used. Instead, the proto module's "encode_text" function should be used.
(https://bazel.build/rules/lib/toplevel/proto)

It, along with "to_json", can be disabled in Bazel using the flag
--incompatible_struct_has_no_methods

The underlying implementation is the same, so there should be no
observable changes in final outputs.
## Motivation for features / changes
Legacy struct providers have been deprecated by Bazel. Replacing them
with modern providers, will make it possible to simplify and remove
legacy handling from Bazel.

Prerequiste: bazelbuild/rules_closure#599 is
merged and released.

Googlers, see cl/597800285.
## Motivation for features / changes
The profiler plugin team wants to use query params for deeplinking
within their application. Unfortunately we clear them when we
re-serialize the application state. To support this I am adding a new
area to the core state which will store unrecognized query parameters
and re-serialize them.

Googlers see cl/615196457

## Screenshots of UI changes (or N/A)
Time series still works!

![image](https://github.com/tensorflow/tensorboard/assets/78179109/378de493-2a44-49f9-8ac9-111a23c14ac0)

The profiler plugin can read read these!

![image](https://github.com/tensorflow/tensorboard/assets/78179109/a870f8a2-06bb-4c96-91ac-7bbda0202ed4)
Some responses from data_provider.read_last_scalars() may contain run
names of the following form: 'SOME_EXPERIMENT_OR_SOMETHING/.', with a
trailing '/.' at the end.

'.' always behaves sort of weird with Hparams and this is no exception.
The problem in this case is that sessions of this sort could not be
matched with metric values. No metric values would appear for them in
the hparams dashboard.

This is because the logic to generate metric names drops the '/.' and so
we could not match. That code relies on some os-level path operations
and we know that '.' has special meaning for filesystems:

https://github.com/tensorflow/tensorboard/blob/23073c55c03f2f1a9da8c7e0bb9db3349dc15c90/tensorboard/plugins/hparams/metrics.py#L39

We fix the problem by transforming the result of
data_provider.read_last_scalars() to apply the same os-level path
operations to the run names (ie the keys of the result).
…osure (tensorflow#6792)

To fix an internal breakage since `extract_providers` hasn't been imported from OSS to internal rules_closure repo yet. Also fixing a few internal build warnings.

#oncall
## Motivation for features / changes
Splits DataTableComponent's context menu functionality into its own
component to be compatible with future updates that will enable dynamic
custom modal creation (for alleviating [stacking context
issues](tensorflow#6737 (comment)))

## Technical description of changes
- No new functionality - simply moves the context menu related template
and logic to a new ContextMenuComponent
- Parameterizes some context menu tests for legibility.

## Detailed steps to verify changes work correctly (as executed by you)
- Tested manually that all context menu features work as before
## Motivation for features / changes
The internal deeplink provider doesn't know about `unknownQueryParams`
yet and as such dispatches `stateRehydratedFromUrl` without defining a
value for `unknownQueryParams`. This leads to a null pointer being
thrown when loading in from the experiment list view. By defining a
default value this null state can never occur.
## Motivation for features / changes
Importing MatIconTestingModule from `@angular/material/icon/testing`
will break 1p sync. Changing this to import from
`webapp/testing/mat_icon_module.ts` instead, in accordance with previous
usage.
Add the missing arg for `extract_providers` and fix struct provider syntax.

Googlers, see cl/617097191.

#oncall
This should resolve build breakages.
…low#6807)

We limit the number of hparams retrieved and rendered in the Hparams
plugin. Otherwise the plugin can become very slow and even crash.

Unlike tensorflow#6780, we do not provide an option for loading more in the
Hparams plugin. We may provide this option later if there is demand. But
generally we think 1000 should be enough, especially if the underlying
hparams provider is sorting the results with "differs" fields first.


![image](https://github.com/tensorflow/tensorboard/assets/17152369/da1f2c26-3804-4faf-be4a-03bb8aaa178d)
…ensorflow#6806)

## Motivation for features / changes
This will be useful for supporting nested modals in the upcoming CDK
Overlay based CustomModal revamp.
## Motivation for features / changes
The current Custom Modal can't display modals outside of their
ancestors' stacking context (e.g. in scalar card tables:
tensorflow#6737 (comment)
), which significantly hinders scalar table context menu functionality.

It also has some minor tricky issues that are difficult to fix like some
modals lingering when another one is opened:

![image](https://github.com/tensorflow/tensorboard/assets/736199/934b1d0a-5650-47e2-94f4-e8836c1a6ab4)

## Technical description of changes
- Before: Custom modals were defined in a consumer component's template.
The modals were embedded views of the consumer component (e.g.
DataTableComponent), which prevented them from being displayed outside
the table's stacking context, e.g. outside of a scalar card table
- After: Custom modals are still defined in a consumer component's
template, but wrapped in ng-templates. They are dynamically created
using a newly defined CustomModal service. When the appropriate
CustomModal service method is a called, the modal template is attached
as an embedded view using CDK Overlay, which places it in a top-level overlay container, freeing it from all stacking context issues.

CustomModalComponent is completely subsumed by Overlay and is thus
deleted. Only the CustomModal service will be required going forward.

## Detailed steps to verify changes work correctly (as executed by you)
Manually tested all custom modal features in runs table, filter bar,
scalar card table

(Need to set query param `enableScalarColumnContextMenus=true` to test
scalar table context menu behavior)
Reapplies tensorflow#6778 after
tensorflow#6721 inadvertently
reverted part of it.

The "to_proto" method on Starlark structs is deprecated and shouldn't be
used. Instead, the proto module's "encode_text" function should be used.
(https://bazel.build/rules/lib/toplevel/proto)

It, along with "to_json", can be disabled in Bazel using the flag
--incompatible_struct_has_no_methods

The underlying implementation is the same, so there should be no
observable changes in final outputs.
roseayeon and others added 28 commits May 3, 2024 01:11
## Motivation for features / changes
Fix a typo `ibazle` to `ibazel`

## Technical description of changes
Fix a typo `ibazle` to `ibazel`

## Screenshots of UI changes (or N/A)
 N/A
## Detailed steps to verify changes work correctly (as executed by you)
 N/A
## Alternate designs / implementations considered (or N/A)
 N/A
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to
4.19.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/releases">express's
releases</a>.</em></p>
<blockquote>
<h2>4.19.2</h2>
<h2>What's Changed</h2>
<ul>
<li><a
href="https://github.com/expressjs/express/commit/0b746953c4bd8e377123527db11f9cd866e39f94">Improved
fix for open redirect allow list bypass</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/express/compare/4.19.1...4.19.2">https://github.com/expressjs/express/compare/4.19.1...4.19.2</a></p>
<h2>4.19.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix ci after location patch by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5552">expressjs/express#5552</a></li>
<li>fixed un-edited version in history.md for 4.19.0 by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5556">expressjs/express#5556</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/express/compare/4.19.0...4.19.1">https://github.com/expressjs/express/compare/4.19.0...4.19.1</a></p>
<h2>4.19.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix typo in release date by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5527">expressjs/express#5527</a></li>
<li>docs: nominating <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> to be
project captian by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5511">expressjs/express#5511</a></li>
<li>docs: loosen TC activity rules by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5510">expressjs/express#5510</a></li>
<li>Add note on how to update docs for new release by <a
href="https://github.com/crandmck"><code>@​crandmck</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5541">expressjs/express#5541</a></li>
<li><a
href="https://redirect.github.com/expressjs/express/pull/5551/commits/660ccf5fa33dd0baab069e5c8ddd9ffe7d8bbff1">Prevent
open redirect allow list bypass due to encodeurl</a></li>
<li>Release 4.19.0 by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5551">expressjs/express#5551</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/crandmck"><code>@​crandmck</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5541">expressjs/express#5541</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/express/compare/4.18.3...4.19.0">https://github.com/expressjs/express/compare/4.18.3...4.19.0</a></p>
<h2>4.18.3</h2>
<h2>Main Changes</h2>
<ul>
<li>Fix routing requests without method</li>
<li>deps: body-parser@1.20.2
<ul>
<li>Fix strict json error message on Node.js 19+</li>
<li>deps: content-type@~1.0.5</li>
<li>deps: raw-body@2.5.2</li>
</ul>
</li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Use https: protocol instead of deprecated git: protocol by <a
href="https://github.com/vcsjones"><code>@​vcsjones</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5032">expressjs/express#5032</a></li>
<li>build: Node.js@16.18 and Node.js@18.12 by <a
href="https://github.com/abenhamdine"><code>@​abenhamdine</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5034">expressjs/express#5034</a></li>
<li>ci: update actions/checkout to v3 by <a
href="https://github.com/armujahid"><code>@​armujahid</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5027">expressjs/express#5027</a></li>
<li>test: remove unused function arguments in params by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5124">expressjs/express#5124</a></li>
<li>Remove unused originalIndex from acceptParams by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5119">expressjs/express#5119</a></li>
<li>Fixed typos by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5117">expressjs/express#5117</a></li>
<li>examples: remove unused params by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5113">expressjs/express#5113</a></li>
<li>fix: parameter str is not described in JSDoc by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5130">expressjs/express#5130</a></li>
<li>fix: typos in History.md by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5131">expressjs/express#5131</a></li>
<li>build : add Node.js@19.7 by <a
href="https://github.com/abenhamdine"><code>@​abenhamdine</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5028">expressjs/express#5028</a></li>
<li>test: remove unused function arguments in params by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5137">expressjs/express#5137</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/blob/master/History.md">express's
changelog</a>.</em></p>
<blockquote>
<h1>4.19.2 / 2024-03-25</h1>
<ul>
<li>Improved fix for open redirect allow list bypass</li>
</ul>
<h1>4.19.1 / 2024-03-20</h1>
<ul>
<li>Allow passing non-strings to res.location with new encoding handling
checks</li>
</ul>
<h1>4.19.0 / 2024-03-20</h1>
<ul>
<li>Prevent open redirect allow list bypass due to encodeurl</li>
<li>deps: cookie@0.6.0</li>
</ul>
<h1>4.18.3 / 2024-02-29</h1>
<ul>
<li>Fix routing requests without method</li>
<li>deps: body-parser@1.20.2
<ul>
<li>Fix strict json error message on Node.js 19+</li>
<li>deps: content-type@~1.0.5</li>
<li>deps: raw-body@2.5.2</li>
</ul>
</li>
<li>deps: cookie@0.6.0
<ul>
<li>Add <code>partitioned</code> option</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/expressjs/express/commit/04bc62787be974874bc1467b23606c36bc9779ba"><code>04bc627</code></a>
4.19.2</li>
<li><a
href="https://github.com/expressjs/express/commit/da4d763ff6ba9df6dbd8f1f0b1d05412dda934d5"><code>da4d763</code></a>
Improved fix for open redirect allow list bypass</li>
<li><a
href="https://github.com/expressjs/express/commit/4f0f6cc67d531431c096ea006c2191b92931bbc3"><code>4f0f6cc</code></a>
4.19.1</li>
<li><a
href="https://github.com/expressjs/express/commit/a003cfab034fbadb1c78ae337ee8ab389adda217"><code>a003cfa</code></a>
Allow passing non-strings to res.location with new encoding handling
checks f...</li>
<li><a
href="https://github.com/expressjs/express/commit/a1fa90fcea7d8e844e1c9938ad095d62669c3abd"><code>a1fa90f</code></a>
fixed un-edited version in history.md for 4.19.0</li>
<li><a
href="https://github.com/expressjs/express/commit/11f2b1db227fd42c2508c427032c1ec671b306be"><code>11f2b1d</code></a>
build: fix build due to inconsistent supertest behavior in older
versions</li>
<li><a
href="https://github.com/expressjs/express/commit/084e36506a18774f85206a65d8da04dc1107fc1b"><code>084e365</code></a>
4.19.0</li>
<li><a
href="https://github.com/expressjs/express/commit/0867302ddbde0e9463d0564fea5861feb708c2dd"><code>0867302</code></a>
Prevent open redirect allow list bypass due to encodeurl</li>
<li><a
href="https://github.com/expressjs/express/commit/567c9c665d0de4c344b8e160146050770233783c"><code>567c9c6</code></a>
Add note on how to update docs for new release (<a
href="https://redirect.github.com/expressjs/express/issues/5541">#5541</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/69a4cf2819c4449ec6ea45649691fb43a528d5d1"><code>69a4cf2</code></a>
deps: cookie@0.6.0</li>
<li>Additional commits viewable in <a
href="https://github.com/expressjs/express/compare/4.18.2...4.19.2">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~wesleytodd">wesleytodd</a>, a new releaser
for express since your current version.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=express&package-manager=npm_and_yarn&previous-version=4.18.2&new-version=4.19.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/tensorflow/tensorboard/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ow#6817)

## Motivation for features / changes
Context menus in Time series scalar tables are ready for use

## Technical description of changes
Removes the enableScalarColumnContextMenus feature flag and associated
code

## Detailed steps to verify changes work correctly (as executed by you)
Manually tested context menus in runs table, filterbar, scalar tables
…es. (tensorflow#6818)

Googlers see cl/617525193.

Also ran `buildifier` to format BUILD files. (Linter step was failing
from CI run for this change).
## Motivation for features / changes
[Global pins] To extend pinned card info available globally, this PR
saves pinned info to localStorage

## Technical description of changes
* Introduced `savedPinsDataSource` to store pinned card tag information
in local storage.
* Since the focus in on saving scalar cards, only the tag name is
persisted.
* Implemented methods `saveScalarPin`, `removeScalarPin`, and
`getSavedScalarPins`.

* Added `addOrRemovePin$` effect in the `metrics/effects/index.ts`
* When the `actions. cardPinStateToggled` is triggered, find the card
info in the `visibeCardFetchInfos` , and the scalar pin info is saved or
removed accordingly.


## Screenshots of UI changes (or N/A)
N/A
## Detailed steps to verify changes work correctly (as executed by you)
* Unit tests pass
## Alternate designs / implementations considered (or N/A)
N/A
Bumps [ip](https://github.com/indutny/node-ip) from 1.1.8 to 1.1.9.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/indutny/node-ip/commit/1ecbf2fd8c0cc85e44c3b587d2de641f50dc0217"><code>1ecbf2f</code></a>
1.1.9</li>
<li><a
href="https://github.com/indutny/node-ip/commit/6a3ada9b471b09d5f0f5be264911ab564bf67894"><code>6a3ada9</code></a>
lib: fixed CVE-2023-42282 and added unit test</li>
<li>See full diff in <a
href="https://github.com/indutny/node-ip/compare/v1.1.8...v1.1.9">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps
[follow-redirects](https://github.com/follow-redirects/follow-redirects)
from 1.15.4 to 1.15.6.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/follow-redirects/follow-redirects/commit/35a517c5861d79dc8bff7db8626013d20b711b06"><code>35a517c</code></a>
Release version 1.15.6 of the npm package.</li>
<li><a
href="https://github.com/follow-redirects/follow-redirects/commit/c4f847f85176991f95ab9c88af63b1294de8649b"><code>c4f847f</code></a>
Drop Proxy-Authorization across hosts.</li>
<li><a
href="https://github.com/follow-redirects/follow-redirects/commit/8526b4a1b2ab3a2e4044299377df623a661caa76"><code>8526b4a</code></a>
Use GitHub for disclosure.</li>
<li><a
href="https://github.com/follow-redirects/follow-redirects/commit/b1677ce00110ee50dc5da576751d39b281fc4944"><code>b1677ce</code></a>
Release version 1.15.5 of the npm package.</li>
<li><a
href="https://github.com/follow-redirects/follow-redirects/commit/d8914f7982403ea096b39bd594a00ee9d3b7e224"><code>d8914f7</code></a>
Preserve fragment in responseUrl.</li>
<li>See full diff in <a
href="https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Dependabot upgrade tensorflow#6802 failed since Python files need to be reformatted after `black` upgrade, bumping `black` version and linting the Python files in this PR.

#oncall
## Motivation for features / changes
Following tensorflow#6819 [Global pins] To extend pinned card info available
globally , this PR load saved pins in the localStorage.
## Technical description of changes
* 3e5b052 Introduced new action
called`metricsUnresolvedPinnedCardsAdded`.
* When `metricsUnresolvedPinnedCardsAdded` is dispatched, the reducer
adds the provided card info to the `state.
unresolvedImportedPinnedCards`.

* aae9be4 Added `loadSavedPins$` effect in the
`metrics/effects/index.ts`
* When `coreActions.pluginsListingLoaded` is triggered, it loads saved
scalar pins in the localStorage and dispatch
`metricsUnresolvedPinnedCardsAdded` with saved pinned cards.
  
* Added `getShouldPersistSettings()` checking logic (metioned in
tensorflow#6819 (comment))
* 2dc49aa To use selector globally, added
`persistent_settings_selectors` to the `webapp/selectors`.
* Add checking `getShouldPersistSettings` in the `loadSavedPins$` and
`addOrRemovePin$`.
 
## Screenshots of UI changes (or N/A)
N/A
## Detailed steps to verify changes work correctly (as executed by you)
* Unit test pass & TAP presubmit pass 
## Alternate designs / implementations considered (or N/A)
N.A
In the Hparams plugin, when fetching metrics (scalar data) for multiple experiments in the comparison view, we can't replace group name `.` with an empty string.

Googlers, see b/332308243 for more details.

Tested internally: cl/582334596

#hparams #oncall
…d tf-keras-nightly (tensorflow#6823)

This should fix the issue described in tensorflow#6686. Compared the graph content with the one parsed from Keras 3, there are some changes in the structure and naming, this PR modifies the graph parsing accordingly.

Googlers, see b/325451531 and b/312739672.

Tested with `tensorboard/plugins/graph:graphs_demo`:

![image](https://github.com/tensorflow/tensorboard/assets/15273931/2e13205a-5ea2-437c-9fa7-3198f0eed1c5)

#keras3 #oncall
Currently inbound node parsing is not backward compatible with Keras 2. Instead of failing directly, changed the code to return empty inbound node results.

Googlers, see the description in cl/622948159 for context.

Tested internally: cl/582334596

#keras3 #oncall
## Motivation for features / changes
Following tensorflow#6821 As pin data is accumulated, unwanted pins can easily
crowd the dashboard. Therefore, this PR adds a button that allows users
to conveniently clear all pins at once.

## Technical description of changes
* 57c6a47 Introduced new action called `metricsClearAllPinnedCards`
* When `metricsClearAllPinnedCards` is dispatched, the reducer removed
all pinned cards in the state.

* a04c2d7 Added `clear all pins` button in the pinned view container.
  * The button will be shown if there's at least one pinned card.

* f0c3a54 Implemented `removeAllScalarPins` method in the saved pins
data source.
  * This method removes stored pins from local storage.

* e97b110 Added `removeAllPins` effect in the `metrics/effects/index.ts`
* When `metricsClearAllPinnedCards` action is called, this effect will
call `removeAllScalarPins` method defined in the saved pin data source.

* c0edd37 guarded UI feature (button) with feature flag and added
related tests.

## Screenshots of UI changes (or N/A)
### Light mode

![image](https://github.com/tensorflow/tensorboard/assets/24772412/a0793e8b-7fea-45f0-b2d8-4e742ca40918)


### Dark mode

![image](https://github.com/tensorflow/tensorboard/assets/24772412/581468a1-1a9c-4ab4-b70a-13c5a5b168f6)

## Detailed steps to verify changes work correctly (as executed by you)
Unit test pass  & cl TAP presubmit pass
## Alternate designs / implementations considered (or N/A)
I also considered a feature to select a pinned card and remove the
selected pinned card, but I thought that this would be the same as
pressing the 'unpin' button individually from the user's perspective. So
I implemented a 'clear all pins' button that removes all pinned cards.
Any feedback is appreciated!
Bumps [tar](https://github.com/isaacs/node-tar) from 6.1.12 to 6.2.1.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Motivation for features / changes
Following tensorflow#6828,

Since global pins are applied automatically, this PR allows users
disable the global pin feature.

## Technical description of changes
2cf2b11 Added `savingPinsEnabled` in the `MetricsSettings`
* Also added a selector getting `settings.savingPinsEnabled` value from
the store.

dec6a63 Introduced new action `metricsEnableSavingPinsToggled`
* If `metricsEnableSavingPinsToggled` is dispatched, it toggles the
`savingPinsEnabled` store value.

6ea22fd Added a checkbox UI to the settings view component.
* Also added a feature flag guard to the component. If check box is
clicked, it dispatched `metricsEnableSavingPinsToggled` action.

568febf Added a new effect `disableSavingPins`
* When `metricsEnableSavingPinsToggled` action is called, this effect
will call `removeAllScalarPins` method if `savingPinsEnabled` value is
false.
 
bbf9050 Added saving pins feature in persistent settings to preserve
user preferences.

3ff7cd2 Add buildMetricsSettingsOverrides util in the testing to use in
tbcorp

## Screenshots of UI changes (or N/A)

![image](https://github.com/tensorflow/tensorboard/assets/24772412/874dbc2b-f01f-4112-b34b-6b07330ea31f)

## Detailed steps to verify changes work correctly (as executed by you)
Unit test passes + created a cl/625208577 to pass TAP Presubmit tests
## Alternate designs / implementations considered (or N/A)
N/A

## Action Items in the next PR
In the next PR, I'll add a "confirmation dialog" that appears when the
user unchecks the checkbox to make the user aware that local storage is
disappearing.

- [ ] Add the confirmation dialog
Some users require the spaces to be preserved in the text shown in the
text dashboard.

At the moment I can't think of a reason why not to enable this
unconditionally. I imagine anybody interested in seeing text logged
would be interested in the value *verbatim*, including spaces.

Googlers, see b/335770352
## Motivation for features / changes
In 3p, enabling standard (non-hparam column) hide is currently dangerous
as there is currently no way to re-show them. Enabling for 3p will have
to wait until we add an affordance other than the 1p-only column
customizer.

Affected users can clear localStorage for the page, or add the
`enableScalarColumnCustomization=true` flag to enable the column
customizer in the settings menu and re-add hidden columns.

## Technical description of changes
Sets `enableScalarColumnContextMenus` default to `false`. (Reverts
tensorflow#6817)
…ables (tensorflow#6836)

## Motivation for features / changes
Using functions in Angular templates leads to unnecessary recomputation,
e.g. getHeaders() is called 60 times from data tables on init and add).
More seriously, they also interfere with other component usage like CDK
Overlay: namely, when an Overlay is set to appear next to a header, the
header element is destroyed and recreated (because of the function in
the template) before the Overlay can position itself, and ends up always
resetting its position to (0,0). Simply memoizing the function will
prevent the recomputation ([Angular
ref](https://angular.io/guide/change-detection-slow-computations#optimizing-slow-computations)).

Profiling the memoized change (using Chrome devtools profiler, which is
admittedly a bit inconsistent) seems to show a several 100ms improvement
in scripting performance.

## Technical description of changes
Replaces the `getHeaders` functions used in scalar/runs data tables with
a new memoized `extendHeaders(headers)` function.

No change in UI behavior.

## Screenshots of UI changes (or N/A)
N/A
…ensorflow#6840)

## Motivation for features / changes

This PR fixes the renaming in tensorflow#6831 and adds test cases to make the test
robust.

## Technical description of changes

* Tried to rename `disableSavingPins` to `removeSavedPinsOnDisable`, but
tensorflow#6831 accidentally changed `removeAllPins` to
`removeSavedPinsOnDisable`.

## Screenshots of UI changes (or N/A)

## Detailed steps to verify changes work correctly (as executed by you)
* Added test cases + cl TAP presubmit passes
## Alternate designs / implementations considered (or N/A)
…r scroll (tensorflow#6837)

## Motivation for features / changes
- Moving the expand button out of the runs table is required to make it
compatible with the upcoming sticky add column b/332788091
- When the table is both vertically long and horizontally wide, it's
very difficult to scroll horizontally: users must scroll all the way to
the bottom of the table in order to access the horizontal scroll bar.
b/332720882

## Technical description of changes
- Moves the "expand button" from inside the runs data table to the
LayoutContainer (in the side bar).
- Moves the "overflow" css property from the runs table to
RunsSelectorComponent (the runs table wrapper)
- Makes the runs table header sticky. This was already set, but wasn't
being applied due to a missing "position: relative" parent.

## Screenshots of UI changes (or N/A)
sticky header:

![image](https://github.com/tensorflow/tensorboard/assets/736199/f2569648-6395-4411-9302-f626b6bd5e9f)

expand table button:

![image](https://github.com/tensorflow/tensorboard/assets/736199/35b2e624-f015-41dc-9114-0cab63b70eef)
## Motivation for features / changes
The add column button in the runs table will be hidden when the table is
wide, which will often be the case. This makes the "add" feature very
difficult to discover.

context: b/332788091

## Technical description of changes
- Moves the add button column outside of and adjacent to the data table
(previously it was a column of the table) and makes it sticky
- Adds additional configuration options to data table to allow runs and
scalar tables to have slightly different designs

## Screenshots of UI changes (or N/A)
Notice the add column is fixed to the right:

![sticky](https://github.com/tensorflow/tensorboard/assets/736199/0f7aca5c-0903-438a-bafd-ddc033e262f7)

Scalar table add column is slightly narrower:

![image](https://github.com/tensorflow/tensorboard/assets/736199/e8c37505-4c3f-41bd-98f3-3b31f99e206e)

## Alternate designs / implementations considered (or N/A)
- Tried adding the add columns to the consumer components of the data
table (runs data table and scalar card data table) instead. But this led
to too much code duplication in the components and templates.
- Tried making the add column a regular table column, instead of adding
it outside in a separate div. But making the column sticky requires
styling the table rows, which data table doesn't provide access to (rows
are configured solely in the consumer components). Also, the chosen
implementation is arguably more consistent with the current design as
the add "column" doesn't actually function as a table column at all
…in feature (tensorflow#6843)

## Motivation for features / changes
Regarding tensorflow#6831 , this PR adds confirmation dialog" that appears when
the user clears the checkbox to make the user aware that local storage
is disappearing.

## Technical description of changes
0e63b07 created a `saving pins dialog` component

05e06f5 Created a `saving pins checkbox` component
* The Save Pin checkbox prevents the default click and must be done
after confirmation in the modal. So I added
`MAT_CHECKBOX_DEFAULT_OPTIONS`
(https://v15.material.angular.io/comComponents/checkbox/overview#click-action-config)
to prevent the default click event. However, if I add this directly to
the `settings view component`, all checkboxes will be disabled,
including other unwanted ones. So, I created a separate checkbox for the
Save Pin checkbox. Please let me know is there any other good way to do
this.

6ba778e Make the dialog shows up when user clears the checkbox
* Passes to `onEnableSavingPinsToggled` whether the checkbox is
selected.
* If the checkbox is selected and user clicks it, it means that the user
disables the global pin, so a dialog box is displayed.
* If the checkbox is not checked but is clicked, it means the user is
trying to enable a global pin and no dialog box will be displayed.
* `onEnableSavingPinsToggled` and `isSavingPinsEnabled` is passed to
`saving-pins-checkbox` component.

## Screenshots of UI changes (or N/A)

![image](https://github.com/tensorflow/tensorboard/assets/24772412/eb442565-4f39-45e7-b893-4866ee3fc1e4)

## Detailed steps to verify changes work correctly (as executed by you)
unit test passes + TAP presubmit passes 
## Alternate designs / implementations considered (or N/A)
@AnuarTB AnuarTB marked this pull request as ready for review May 3, 2024 02:47
@AnuarTB AnuarTB closed this May 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet