[OpenNMS/opennms] 24ff8c: NMS-20174: Fix Menubar/SideMenu issues in Firefox ...
mershad-manesh via opennms-cvs <[email protected]>
| Newsgroups | gmane.network.opennms.cvs |
|---|---|
| Message-ID | <OpenNMS/opennms/push/refs/heads/merge-foundation/foundation-2025-to-release-36.x/[email protected]> |
Branch: refs/heads/merge-foundation/foundation-2025-to-release-36.x
Home: https://github.com/OpenNMS/opennms
Commit: 24ff8c664530b63d55f9238636203e6e47aaffda
https://github.com/OpenNMS/opennms/commit/24ff8c664530b63d55f9238636203e6e47aaffda
Author: Scott Theleman <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M features/springframework-security/src/main/java/org/opennms/web/springframework/security/LoginModuleUtils.java
A features/springframework-security/src/test/java/org/opennms/web/springframework/security/LoginModuleUtilsTest.java
M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
M opennms-webapp/src/main/webapp/includes/bootstrap.jsp
M ui/src/components/Menu/UserSelfServiceMenuItem.vue
M ui/src/services/localStorageService.ts
M ui/src/services/themeService.ts
A ui/tests/components/Menu/UserSelfServiceMenuItem.test.ts
A ui/tests/services/localStorageService.test.ts
A ui/tests/services/themeService.test.ts
Log Message:
-----------
NMS-20174: Fix Menubar/SideMenu issues in Firefox and Safari on JSP pages (#8758)
* NMS-20174: Fix Vue menu not rendering in Safari/Firefox on JSP pages
* NMS-20174: Never use saved REST/API requests as post-login redirect target
* NMS-20174: Don't let blocked localStorage prevent the menu app from mounting
* NMS-20174: Fix logout from JSP pages silently failing in Firefox
* NMS-20174: Cache-bust the Vue menu bundle links in bootstrap.jsp
* NMS-20174: Update stale isInvalidSavedRequestUrl javadoc
Commit: 31d8d8958651456859ddfca8ef1c80245194fda8
https://github.com/OpenNMS/opennms/commit/31d8d8958651456859ddfca8ef1c80245194fda8
Author: Marshall Massengill <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M ui/src/containers/OpenAPI.vue
A ui/tests/containers/OpenAPI.test.ts
Log Message:
-----------
NMS-20166: Improve the OpenAPI Docs UI page (#8746)
* NMS-20166: Stop the OpenAPI docs page jumping when a nav entry or tab is clicked
Two things on this page call Element.scrollIntoView, and it scrolls every
scrollable ancestor rather than only the intended pane. RapiDoc does it twice per
nav click, for the operation and for the nav link. PrimeVue's Tab does it too, in
scrollInView with block 'nearest', when a tab takes focus.
Which boxes are scrollable is not entirely ours to decide: PrimeVue's theme is
generated at runtime, and a box with overflow hidden on one axis has the other
computed to auto, which quietly makes it a scroll container. So the layout is
tightened where it can be, and the offsets are put back where it cannot.
- Puts each doc in its own tab, so only one is displayed rather than stacking two
full-height rows and guaranteeing the page overflowed.
- Measures the space left below the breadcrumbs and above the footer, on mount and
whenever the chrome reflows, rather than subtracting a fixed offset from 100vh.
- Clips the column and the tab boxes. clip rather than hidden, since a hidden box is
still programmatically scrollable.
- Restores the vertical scroll of every scrollable box in the column's light DOM and
above it after a click, which is what makes this hold whatever the theme leaves
scrollable. querySelectorAll does not pierce shadow roots, so RapiDoc's own panes
are untouched and still scroll to the clicked operation. Horizontal offsets are
left alone, since the tab strip is legitimately scrollable sideways.
- Holds the document at the top while the column fits. A click is not the only thing
that moves the page: switching tabs focuses the new tab and panel, and the browser
scrolls a focused element into view on its own, after the frames the click handler
watches. Skipped when the viewport is too short to hold the column, since the page
then does need to scroll.
- Drops the IntersectionObserver that deferred the V1 doc; its tab being opened is
now the trigger.
Everything here stays inside the page. Nothing is written to documentElement, so the
fixed app chrome and the side menu's flyouts, which need overflow visible, are
unaffected.
* NMS-20166: Share the in-flight OpenAPI spec fetch
Cache the pending promise rather than its result, so opening the V1 tab
before the mount-time fetch resolves joins that request instead of
issuing a second pair. The entry is dropped again if the fetch fails, so
a later call still retries.
Commit: 783a348874ed5598dd5e4cdea355ba40327df508
https://github.com/OpenNMS/opennms/commit/783a348874ed5598dd5e4cdea355ba40327df508
Author: mershad-manesh <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M .circleci/epoch
Log Message:
-----------
Update epoch
Commit: ec05fda75d8da50da0edc7f59406c6c461289931
https://github.com/OpenNMS/opennms/commit/ec05fda75d8da50da0edc7f59406c6c461289931
Author: Marshall Massengill <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M docs/modules/operation/nav.adoc
M docs/modules/operation/pages/deep-dive/notifications/bonus-strategies.adoc
A docs/modules/operation/pages/deep-dive/notifications/strategies/scripting.adoc
M docs/modules/releasenotes/pages/changelog.adoc
M docs/modules/releasenotes/pages/whatsnew.adoc
M opennms-services/pom.xml
M opennms-services/src/main/java/org/opennms/netmgt/notifd/BSFNotificationStrategy.java
M opennms-services/src/test/java/org/opennms/netmgt/notifd/BSFNotificationStrategyIT.java
Log Message:
-----------
NMS-20111: Updates BSF in Notifd to JSR-223 (#8718)
* NMS-20111: Port BSFNotificationStrategy to JSR-223
Apache BSF is retired to the Apache Attic; the strategy now runs
scripts through javax.script. The class name, all 25 script variable
names, the results["status"]=="OK" contract, run-type exec/eval
semantics, and the 0/-1 return mapping are unchanged, so existing
notificationCommands.xml entries and scripts keep working. The engine
is chosen by lang-class (JSR-223 name) or the file extension, with
BSF's .gy alias mapped to Groovy; bsf-engine and file-extensions are
accepted but ignored with a warning.
Compiled scripts are cached per path+engine with lastModified
invalidation (Groovy leaks a class per compilation, same rationale as
provisiond's JSR223ScriptCache); the compile attempt catches Throwable
because BeanShell declares Compilable but its compile() throws
Error("unimplemented"), in which case scripts are evaluated from
source on a fresh per-invocation engine. Bindings are built per
invocation, which drops the old static synchronized serialization of
every scripted notification and the declare/undeclare dance.
The IT grows from one to nine cases (eval, Groovy, .gy, lang-class
resolution, missing file, non-OK status, invalid run-type, deprecated
switches) and uses the database populator's actual node id: node ids
are sequence-assigned, so the hardcoded 1 only worked while the class
had a single test.
* NMS-20111: Document the scripted notification strategy
The strategy was never documented; adds a Scripted Notifications page
(parameters, script variables, the results.status success contract,
BSF migration notes) to the notification strategies section, plus the
release-note entries for the JSR-223 port.
* NMS-20111: Apply adversarial-review findings
- BeanShell scripts see null variables again: bsh's JSR-223 engine
treats a null binding as an undefined variable, breaking scripts
that test node fields against null (worked under BSF). The
BeanShell path now drives bsh.Interpreter directly, as BSF did;
Interpreter.set defines nulls properly. Reflective, since bsh is a
runtime-scope dependency.
- The command's <substitution> element is honored when the argument
value is empty, so the strategy's own switches (file-name,
lang-class, run-type) can be configured in notificationCommands.xml
the way the docs show; notifd passes empty values for switches
without a notification parameter, which previously made the
documented setup - and the bsf-engine deprecation warning -
unreachable.
- Compile failures no longer latch the script-cache entry when the
script itself is at fault: a fixed script compiles again. Only
engines that cannot compile (BeanShell throws Error) latch. Cache
keys derive from lang-class/extension so cache hits build no
throwaway engine, and mtime comparison uses != so restored-older
files also invalidate.
- Groovy engines come from a runtime-scope groovy-dependencies entry
instead of relying on provision-persistence keeping groovy on the
classpath; a GLOBAL_SCOPE bindings object avoids a bsh NPE path.
- IT covers the review gaps: null bindings, substitution-shaped
config, cache reuse + mtime invalidation, missing file-name.
- Docs: substitution vs notification-parameter configuration spelled
out, microblog_username listed as deprecated, release note no
longer overstates engine-state isolation and mentions strict UTF-8.
* NMS-20111: Trim the whats-new entry to a single line
Review feedback on #8718: whats-new items should stay within two lines so the page
is quick to scan, with the detail in the deep-dive documentation.
The entry now states the change and links to Scripted Notifications. Everything it
listed was already covered there, apart from the UTF-8 caveat, which moves into that
page's notes on migrating BSF-era scripts.
Commit: a6d757ac2dff116ba3caffe6c4faa71d536c436b
https://github.com/OpenNMS/opennms/commit/a6d757ac2dff116ba3caffe6c4faa71d536c436b
Author: mershad-manesh <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M opennms-container/core/plugins.sh
Log Message:
-----------
Update plugins.sh
We don't need Cloudsmith CLI here
Commit: c686867898112105fa1bfa64ac17251aa5131d8a
https://github.com/OpenNMS/opennms/commit/c686867898112105fa1bfa64ac17251aa5131d8a
Author: Marshall Massengill <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M docs/modules/operation/nav.adoc
M docs/modules/operation/pages/deep-dive/notifications/bonus-strategies.adoc
M docs/modules/operation/pages/deep-dive/notifications/introduction.adoc
R docs/modules/operation/pages/deep-dive/notifications/strategies/mattermost.adoc
R docs/modules/operation/pages/deep-dive/notifications/strategies/slack.adoc
A docs/modules/operation/pages/deep-dive/notifications/strategies/webhook.adoc
M docs/modules/operation/pages/quick-start/beyond-qs.adoc
M docs/modules/releasenotes/pages/changelog.adoc
M docs/modules/releasenotes/pages/whatsnew.adoc
M opennms-services/pom.xml
R opennms-services/src/main/java/org/opennms/netmgt/notifd/AbstractSlackCompatibleNotificationStrategy.java
R opennms-services/src/main/java/org/opennms/netmgt/notifd/MattermostNotificationStrategy.java
R opennms-services/src/main/java/org/opennms/netmgt/notifd/SlackNotificationStrategy.java
A opennms-services/src/main/java/org/opennms/netmgt/notifd/WebhookNotificationStrategy.java
R opennms-services/src/test/java/org/opennms/netmgt/notifd/MattermostNotificationStrategyIT.java
R opennms-services/src/test/java/org/opennms/netmgt/notifd/MattermostNotificationStrategyTestServlet.java
R opennms-services/src/test/java/org/opennms/netmgt/notifd/SlackCompatibleNotificationStrategyTest.java
R opennms-services/src/test/java/org/opennms/netmgt/notifd/SlackNotificationStrategyIT.java
A opennms-services/src/test/java/org/opennms/netmgt/notifd/WebhookNotificationStrategyIT.java
A opennms-services/src/test/java/org/opennms/netmgt/notifd/WebhookNotificationStrategyTest.java
A opennms-services/src/test/java/org/opennms/netmgt/notifd/WebhookNotificationStrategyTestServlet.java
R opennms-services/src/test/resources/MattermostNotificationStrategyTest/WEB-INF/web.xml
A opennms-services/src/test/resources/WebhookNotificationStrategyTest/WEB-INF/web.xml
Log Message:
-----------
NMS-20113: Replace the Slack and Mattermost notification channels with a generic webhook (#8734)
* NMS-20113: Replace the Slack and Mattermost notification channels with a generic webhook
The Slack and Mattermost strategies shared a base class that built one
hardcoded JSON shape, so no other receiver could be expressed, and it
treated only a literal "ok" response body as success, which meant a
receiver answering 204 with no body was always logged as failed.
Adds WebhookNotificationStrategy, which takes the URL, method, content
type, headers, and body template from the notification command. Values
substituted into a JSON body are escaped, with a |raw modifier for
fragments that are themselves JSON, and the rendered body is parsed
before it is sent so a template mistake is reported locally instead of
as an opaque 400. Any 2xx counts as success, narrowed by an optional
-success-match for receivers that report failure behind a 200.
Template tokens deliberately exclude colons so they cannot collide with
the metadata DSL, which notifd resolves against notification parameters
before the command runs.
Removes the two strategies, their shared base class, and their tests,
and replaces the two documentation pages with a single webhook page
carrying Slack, Mattermost, Microsoft Teams, Discord, and non-chat
examples plus a migration table.
* NMS-20113: Review fixes for the webhook notification strategy
Log only the scheme and host of the webhook URL. Slack, Discord and
Teams URLs carry their credential in the path or query, so the previous
error log wrote a secret to notifd.log on any connection failure.
Reject blank bodies and trailing content when validating a JSON payload.
ObjectMapper.readTree maps blank input to a MissingNode and stops at the
first value, so {"text": "x"} oops was passing the check the strategy
advertises and failing at the receiver instead.
Also warn on an unknown template modifier rather than emitting the token
verbatim, ignore a negative timeout, and document that substitution
applies to the body alone and that a header must be declared as an
argument for its system property to take effect.
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
* NMS-20113: Fix three escaped tokens in the webhook documentation
AsciiDoc honors a backslash escape before a brace only when the braces
hold a valid attribute name, so ${...}, ${customBlocks|raw} and
${scv:...} kept their backslash and rendered as $\{...} on the page.
None of the three needs escaping, because none of them parses as an
attribute reference in the first place.
---------
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
Commit: 8b2bc3587b3b95b7560802c682b1b61be833af65
https://github.com/OpenNMS/opennms/commit/8b2bc3587b3b95b7560802c682b1b61be833af65
Author: CI/CD System <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M opennms-container/core/plugins.sh
Log Message:
-----------
Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025
Commit: a480037d3ce4fbcd3a40563c80c0021b8f1c403e
https://github.com/OpenNMS/opennms/commit/a480037d3ce4fbcd3a40563c80c0021b8f1c403e
Author: Scott Theleman <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M core/web-assets/src/main/assets/style/opennms-theme.scss
M features/springframework-security/src/test/java/org/opennms/web/springframework/security/LoginModuleUtilsTest.java
M opennms-services/src/test/resources/opennmsPageSequence.xml
R opennms-web-api/src/main/java/org/opennms/web/svclayer/NodeListService.java
R opennms-web-api/src/main/java/org/opennms/web/svclayer/model/NodeListCommand.java
R opennms-web-api/src/main/java/org/opennms/web/svclayer/model/NodeListModel.java
R opennms-web-api/src/main/java/org/opennms/web/svclayer/support/DefaultNodeListService.java
M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/NodeRestService.java
M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-alt.json
M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-default.json
M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-legacy.json
M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template.json
M opennms-webapp-rest/src/test/java/org/opennms/web/rest/support/menu/MenuProviderTest.java
M opennms-webapp-rest/src/test/resources/dispatcher-servlet.xml
M opennms-webapp-rest/src/test/resources/menu/menu-template.json
R opennms-webapp/src/main/java/org/opennms/web/controller/node/NodeListController.java
M opennms-webapp/src/main/java/org/opennms/web/element/ElementIdNotFoundException.java
M opennms-webapp/src/main/java/org/opennms/web/element/ElementUtil.java
M opennms-webapp/src/main/resources/org/opennms/web/svclayer/applicationContext-svclayer.xml
M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
R opennms-webapp/src/main/webapp/WEB-INF/jsp/element/nodeList.jsp
R opennms-webapp/src/main/webapp/WEB-INF/tags/element/nodelist.tag
R opennms-webapp/src/main/webapp/WEB-INF/tags/element/pagedList.tag
M smoke-test/src/main/java/org/opennms/smoketest/selenium/AbstractOpenNMSSeleniumHelper.java
M smoke-test/src/test/java/org/opennms/smoketest/AdminPasswordGateIT.java
M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
R smoke-test/src/test/java/org/opennms/smoketest/NodeListPageIT.java
M smoke-test/src/test/java/org/opennms/smoketest/ProvisioningNewUIIT.java
M smoke-test/src/test/java/org/opennms/smoketest/ui/NodeListIT.java
M ui/src/components/Nodes/hooks/useInterfaceListing.ts
M ui/src/styles/opennms-styles.scss
M ui/tests/components/Menu/menu-template-test.json
M ui/tests/components/Menu/utils.test.ts
Log Message:
-----------
NMS-18217: Remove legacy Node List page (#8761)
* NMS-18217: remove legacy JSP node list page and DefaultNodeListService
* NMS-18217: update smoke tests for legacy node list removal
* NMS-18217: fix remaining smoke tests and stale comments referencing removed node list
* NMS-18217: address PR review feedback
- Drop the dead nodePage() call in ProvisioningNewUIIT (immediately
overwritten by direct node-detail navigation) and remove the now
caller-less nodePage() helper
- Replace the last /element/nodeList.htm reference (stale example URL
in LoginModuleUtilsTest) with a surviving page
- Fix pre-existing ElementIdNotFoundException bug: the 6-arg
constructor accepted browseUri but never assigned it, so the
'browse the node list' link on the element-id-not-found error page
never rendered for those call sites
* NMS-18217: force light color-scheme for native checkboxes and radios on legacy pages
Extends the existing <select> fix: in dark mode PrimeVue sets
color-scheme: dark on the document, making native form controls render
dark on the light-only legacy JSP pages (e.g. the alarm list's Ack
checkboxes).
Commit: 717c67f6f0857c1a474917d4ab7d9623d94f8787
https://github.com/OpenNMS/opennms/commit/717c67f6f0857c1a474917d4ab7d9623d94f8787
Author: Scott Theleman <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M ui/package.json
M ui/packages/onms-ui/src/components/OnmsTabs.vue
M ui/pnpm-lock.yaml
M ui/src/composables/useDownload.ts
M ui/src/services/snmpDataCollectionService.ts
A ui/tests/components/Device/dcbModalConfigDiffContent.test.ts
M ui/tests/components/Nodes/EventsTable.test.ts
M ui/tests/components/Nodes/IpInterfacesTable.test.ts
M ui/tests/components/Nodes/OutagesTable.test.ts
M ui/tests/components/Nodes/SnmpInterfacesTable.test.ts
M ui/tests/components/TrapdConfiguration/GeneralConfiguration.test.ts
M ui/tsconfig.json
Log Message:
-----------
NMS-19725: Dependabot updates for Vue UI (August 2026) (#8763)
* NMS-19725: Update Vue UI dependencies from open Dependabot PRs (August 2026)
Dependency updates in /ui:
- axios 1.15.0 -> 1.19.0, ace-builds -> 1.44.0, fast-xml-parser -> 5.10.1
- fast-xml-builder -> 1.3.0 (transient, pnpm override)
- typescript ~5.4.5 -> ~5.9.3, vue-tsc 2.2.12 -> 3.3.9,
@vitejs/plugin-vue 5.2.4 -> 6.0.8 (requires moduleResolution: bundler)
- diff 8 -> 9 (removed stale @types/diff; diff ships its own types)
- removed unused uuid + @types/uuid (last usage removed in NMS-18195)
- happy-dom 9.20.3 -> 20.11.2 plus transient overrides (shell-quote,
immutable, svgo, brace-expansion, js-cookie, js-yaml, postcss) to
remediate all osv-scanner findings with CVSS >= 4.0
Code adjustments for the updates:
- axios >= 1.19 header typings include null: assert content-type headers
as string | undefined in useDownload.ts and snmpDataCollectionService.ts
- vue-tsc 3 strictness: non-null assertion on optional value prop passed
to PrimeVue Tabs in OnmsTabs.vue
Test cleanup:
- GeneralConfiguration.test.ts: pass numbers (not strings) to numeric
refs bound to OnmsInputNumber, silencing Vue prop type warnings
- Nodes table tests: mock store fetch actions BEFORE mounting so the
onMounted fetch no longer fires real network requests (silences
unhandled ECONNREFUSED AggregateErrors); simplified the OutagesTable
double-mount workaround this enables
* NMS-19725: Address PR review feedback
Commit: b7aab90f77a7edfbe9fefae2e8c9ef10339b9413
https://github.com/OpenNMS/opennms/commit/b7aab90f77a7edfbe9fefae2e8c9ef10339b9413
Author: Morteza E <[email protected]>
Date: 2026-08-10 (Mon, 10 Aug 2026)
Changed paths:
Log Message:
-----------
Merge remote-tracking branch 'origin/foundation-2025' into release-36.x
Compare: https://github.com/OpenNMS/opennms/compare/3eef0ac8dffd...b7aab90f77a7
To unsubscribe from these emails, change your notification settings at https://github.com/OpenNMS/opennms/settings/notifications
_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/wiki/index.php?page=MailingListFaq
opennms-cvs mailing list
To *unsubscribe* or change your subscription options, see the bottom of this page:
https://lists.sourceforge.net/lists/listinfo/opennms-cvs