feat(notifications): add hosted file-based in-IDE notifications#566
Draft
araarush wants to merge 3 commits into
Draft
feat(notifications): add hosted file-based in-IDE notifications#566araarush wants to merge 3 commits into
araarush wants to merge 3 commits into
Conversation
Adds a client-side notifications feature to the Eclipse plugin, matching the schema and behavior of the other Amazon Q IDE plugins. On startup (after the language server is ready) a background poller fetches a hosted JSON file over HTTPS every 10 minutes and shows targeted in-IDE toasts. - Schema 2.x "combined" payload model + a polymorphic condition DSL (==, !=, >, >=, <, <=, anyOf, noneOf, and, or, not) with a single Jackson deserializer. - Rules engine gates display on compute/os/ide/extension/authx conditions (semver for ide/extension versions; SNAPSHOT builds and not-installed extensions are never shown). - ETag-cached fetcher that degrades gracefully: any failure (absent file, 403/404, empty, malformed, offline) resolves to "show nothing" and only logs. Supports a file:// endpoint for local testing. - Toasts: Info/Warning auto-dismiss; Critical persists until dismissed. Actions: ShowUrl, UpdateExtension, OpenChangelog, plus More and Dismiss. Dismissals persist for 60 days; emergencies re-show until dismissed. - User preference "Show Amazon Q notifications" (default on) as a kill switch; telemetry (toolkit_showNotification / toolkit_invokeAction) is independent of notification polling and respects the telemetry opt-in. - 42 unit tests covering parsing, the DSL, rules, fetch/degradation, dismissal, and filtering/dedup. Wired into LspStartupActivity (start) and Activator.stop (clean shutdown).
The OpenChangelog notification action opened https://github.com/aws/amazon-q-eclipse/blob/main/CHANGELOG.md, which 404s (there is no CHANGELOG.md in the repo). Point AMAZON_Q_CHANGELOG_URL at the GitHub releases page (the de-facto changelog for the repo) so 'View changelog' resolves.
Replace an internal-only reference in the CRITICAL-persistence javadoc with a provider-neutral phrasing; no behavior change.
Author
Screen.Recording.2026-07-16.at.11.05.01.AM.movDemonstration of notification functionality |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds hosted file-based in-IDE notifications to the Amazon Q Eclipse plugin, bringing it to parity with the
other Amazon Q IDE plugins (VS Code, JetBrains, Visual Studio), which already support this capability. This lets
operators proactively notify users of known issues and available fixes directly in the IDE, without requiring
users to check GitHub or external channels.
On startup (after the language server is ready), a background service polls a hosted JSON file over HTTPS every
10 minutes and shows targeted in-IDE toast notifications based on configurable display conditions.
What it does
reusing the existing
HttpClientFactory/ manifest-fetcher patterns. The fetcher is total (never throws) anddegrades gracefully — an absent/404/empty/malformed endpoint, or a network failure, resolves to "show nothing"
and is only logged (no error dialog, no crash). Supports a
file://endpoint for local development.condition expression language (
==,!=,>,>=,<,<=,anyOf,noneOf,and,or,not).compute/os/ide/extension/authxconditions. Uses semanticversion comparison for IDE and extension versions; development (SNAPSHOT) builds and not-installed extensions
are never shown.
(open URL / update / open changelog) plus a "More" dialog and an explicit "Dismiss". Dismissals persist for
60 days; emergency notifications re-show until dismissed.
toolkit_showNotification/toolkit_invokeAction, independent of notification polling andrespecting the existing telemetry opt-in.
Scope
separately and is not part of this change; until that content exists the client is a safe no-op (verified).
notificationspackage; the only edits to existing files are minimal wiring(start polling on startup, stop cleanly on shutdown) plus two preference constants and two URL constants.
Testing
rules engine (all operators, semver, SNAPSHOT/none-installed rules, auth matching), the fetcher's full
degradation matrix (200/304/404/malformed/timeout/
file://) via an injected mockHttpClient, dismissalpersistence + cleanup, and the filtering/dedup/startup-once logic.
degradation confirmed on macOS, Windows, and Linux (all three SWT backends), across the oldest and newest
supported Eclipse releases. Both severities, all action buttons, persistence, and error-log cleanliness
verified on each.
Notes for reviewers
delivered out-of-band and the client shows nothing until it exists.