You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This pull request introduces several improvements to project configuration, documentation, and developer tooling. The most notable changes include enhanced documentation using the Diataxis framework, improved VS Code and formatting tool integration, and updates to code and documentation formatting for consistency and clarity.
Documentation Enhancements:
Expanded the README.md and docs/README.md to more thoroughly adopt the Diataxis framework, adding new sections, clearer learning paths, and a new how-to guide for tracing signal routes and reading the routing diagram. Also clarified feature lists to highlight interactive signal routing features. [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15]
Developer Tooling and Formatting:
Added .prettierignore to exclude generated and build files from formatting, and introduced .git-blame-ignore-revs to ignore bulk formatting commits in blame output. Set up .gitattributes to enforce LF line endings across the codebase. [1][2][3]
Updated VS Code workspace settings: enabled Prettier as the default formatter, set formatting and code actions on save, and recommended installing ESLint and Prettier extensions. [1][2]
Reformatted and cleaned up VS Code code snippets for TypeScript React, improving consistency and maintainability. [1][2][3]
Project Configuration:
Tweaked .releaserc.json formatting for consistency in the changelog plugin configuration.
These updates collectively improve the developer experience, ensure consistent formatting and documentation, and make it easier for both new users and contributors to get started and find the information they need.
…on component
feat: update Routing to support synthetic tie lines for live routing feedback
feat: modify Versions component layout for better responsiveness
feat: extend apiSlice and routingFeedbackSlice to handle multiple sink routes
- Introduced Help component with dynamic routing for documentation.
- Added HelpSidebar for navigation through documentation categories and pages.
- Implemented HelpArticle for rendering markdown content with support for GFM tables.
- Created docsContent module for managing documentation structure and content retrieval.
- Added tests for Help component, HelpArticle, and docsContent functionality.
- Updated LoginForm and TopNav to include links to Help documentation.
- Added react-markdown and remark-gfm for markdown rendering.
The repository already stores all text files with LF; this keeps
Windows editors and tooling from committing CRLF.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sages
Detach handlers before closing a socket and ignore events from any
socket that is no longer current, so a replaced connection can't keep
dispatching messages, clobber the active socket, or trigger a spurious
fallback. WS_DISCONNECT now also dispatches disconnected() since the
detached onclose no longer does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nding
Rapid clicks on Join started multiple debug sessions and sockets,
producing duplicate console messages.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The server already returns the URL reachable from the browser's side of
the network, so connect to `url` first and use `fallbackUrl` only as the
fallback instead of swapping them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- eslint.config.js: @eslint/js + typescript-eslint recommended, React
hooks, Vite react-refresh, plus type-aware no-floating-promises and
no-misused-promises; eslint-config-prettier last to avoid conflicts
- Rename prettierrc.json to .prettierrc.json so Prettier finds it, and
add .prettierignore
- Add lint, lint:fix, format and format:check scripts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GitHub applies .git-blame-ignore-revs automatically; locally run
`git config blame.ignoreRevsFile .git-blame-ignore-revs`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Log failures from join() instead of leaving an unhandled rejection
when starting a debug session fails
- Mark fire-and-forget RTK Query triggers, refetch() and navigate() with
`void` (their promises don't reject without unwrap())
- Wrap async click/submit handlers so React gets a void callback
- Replace `any` with `unknown` or a narrow type for the legacy monaco
languages.json API; String -> string in LogMessage
- Remove unused getAppIdFromPath; rename icons/index.tsx to .ts since it
holds no components
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Drop legacy eslint.options.extensions (removed in ESLint 10), the
prettier/prettier rule customization, html validation and the
deprecated eslint.alwaysShowStatus; the default eslint.validate also
covers .tsx, which the old list missed
- Use Prettier as the default formatter and format on save
- Recommend the ESLint and Prettier extensions
- Document the lint and format scripts in the README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ESLint 10, jsdom 29 and Vite 8 require Node ^20.19.0 || ^22.13.0 || >=24,
so Node 18 is no longer supported. Update the README prerequisite and
declare the range in package.json engines.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the join ref, which was released before the WebSocket opened,
with an isConnecting flag in the websocket slice. It is set when a join
begins and cleared when the socket opens, fails, or disconnects, and the
Start button is disabled while it is set.
Dispatch disconnected() when replacing a socket, since its detached
onclose no longer reports it, so a failed reconnect can't leave
isConnected stuck at true.
Exercise the stale socket's captured handlers in the middleware tests
and cover reconnect failure and the isConnecting lifecycle.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Add signalColors.ts to define colors for various signal types used in routing diagrams.
- Introduce signalTypes.ts to manage signal-type flag algebra, including parsing and formatting functions.
- Create signalTypes.test.ts to validate the functionality of signal type parsing and formatting.
- Implement useRouteCandidates.ts for memoized candidate-source lookup based on static tie-line graphs.
- Add routingCommands.ts to define the wire contract for routing commands and their builders.
- Create routingCommands.test.ts to ensure the correctness of command builders and error handling.
- Update routingFeedbackSlice.ts to manage sink input changes, ensuring proper route handling and clearing.
- Add routingFeedbackSlice.test.ts to validate the behavior of sink input changes in the state.
- Added `secretsFile.ts` to handle parsing and validation of secrets files, ensuring security by not exposing sensitive values in error messages or logs.
- Introduced types and interfaces for issues, summaries, and results related to secrets file processing.
- Implemented functions to normalize, validate, and summarize secrets entries.
- Added tests for the new functionality.
feat(download): create utility functions for downloading files
- Introduced `downloadFile.ts` with functions to download text and JSON files, including support for timestamped filenames.
- Added tests for download functionality to ensure correct behavior across different scenarios.
test(secretsContract): add comprehensive tests for secrets API contract
- Created `secretsContract.test.ts` to validate command builders and constants against the expected API shapes and limits.
- Ensured that command builders emit the exact wire shape required by the backend.
feat(secretsContract): define the wire contract for the Essentials secrets API
- Established the structure for secrets API requests and responses in `secretsContract.ts`, including command requests, bulk operations, and error handling.
- Documented the API's behavior and constraints to ensure consistency across implementations.
…cross routing commands and secrets contract files; add tests for routing feedback middleware; enhance WebSocket handling in middleware; update TypeScript configuration to include ES2022.Error library.
- Route popover marks the current source per selected signal type, so a
breakaway output (Audio and Video from different inputs) no longer shows
one source as current for every signal
- Pending route markers track the command's signal type, so feedback for
another signal can't confirm or block them
- Routing feedback WebSocket guards a malformed URL and keeps trying the
fallback on every reconnect
- Help renders heading ids (rehype-slug), scrolls to fragment links, and
resolves links on category index pages against their own folder
- Multiview tile select and edit controls are sibling buttons instead of
nested interactive elements
- Bulk secrets Apply stays disabled while the file checker rejected any
entry, so a partly invalid file is never partly written
- Fix a broken fragment link in change-routes.md and document the
all-or-nothing secrets apply accurately
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Prevent modal dismissal while preview or commit is running
src/features/secrets/BulkApplyModal.tsx:230
The footer prevents cancellation while a preview or commit is running, but onHide={onClose} still lets the header close button or Escape dismiss the modal. A commit then continues invisibly, so users can believe it was cancelled and never see its outcome. Guard onHide and hide/disable the header close control while busy.
Prevent dialog dismissal while deleting
src/features/secrets/SecretDeleteModal.tsx:38
Although Cancel is disabled during deletion, the header close button and Escape still invoke onClose, hiding the dialog while the destructive request continues. Guard onHide and remove the close control during isDeleting.
Use selected provider entries for collision and overwrite checks
src/features/secrets/SecretEditModal.tsx:67
existingKeys contains records only for the page's active provider, but the add form lets selectedProvider change. Collision ownership and the overwrite flag are therefore computed against the wrong store: switching providers can send overwrite: true based on a same-named key in the original provider, without knowing whether the target key is unmanaged, or send false when the target actually exists. Lock adds to the active provider, or load and use the selected provider's entries before allowing submission.
This issue also appears on line 96 of the same file.
Update tutorial to reflect current Device Detail features
docs/tutorials/device-management-basics.md:87
This tutorial still says Device Detail is a placeholder, and its later limitations section says there is no real-time status or interaction. The current DeviceDetail renders properties, feedbacks, executable methods, manual refresh, and two-second live polling. Update these sections so the enhanced documentation describes the feature users actually see.
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
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.
This pull request introduces several improvements to project configuration, documentation, and developer tooling. The most notable changes include enhanced documentation using the Diataxis framework, improved VS Code and formatting tool integration, and updates to code and documentation formatting for consistency and clarity.
Documentation Enhancements:
README.mdanddocs/README.mdto more thoroughly adopt the Diataxis framework, adding new sections, clearer learning paths, and a new how-to guide for tracing signal routes and reading the routing diagram. Also clarified feature lists to highlight interactive signal routing features. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15]Developer Tooling and Formatting:
.prettierignoreto exclude generated and build files from formatting, and introduced.git-blame-ignore-revsto ignore bulk formatting commits in blame output. Set up.gitattributesto enforce LF line endings across the codebase. [1] [2] [3]Project Configuration:
.releaserc.jsonformatting for consistency in the changelog plugin configuration.These updates collectively improve the developer experience, ensure consistent formatting and documentation, and make it easier for both new users and contributors to get started and find the information they need.