Repository navigation
Release 4.3.3 - #1215
Merged
Merged
Release 4.3.3#1215
Conversation
fix(partner): honour autoSaveOnBuild=false on build and debug [DOPE-675]
The folders took most of the start screen. They are 25% smaller on each side, the loading placeholders match, and the actions menu and lock badge move up so they stay inside the folder body. Name, path and date now end in an ellipsis instead of being clipped at the edge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0154FaQPkADqHmwy9B3grDcV
Signed out, the card took a large block of the start screen for an icon, a heading and a paragraph. It is now a single line of title, "Sign in with your Autonomy Edge account", with the Sign in and Create an account actions under it and tighter padding. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0154FaQPkADqHmwy9B3grDcV
The start screen split "my projects" into an Autonomy Edge section and a local one, each with its own heading. They now share the one Projects grid: Order by and the search apply to both as one list, and an Edge project carries a cloud icon so it still reads apart from a local one. The Edge read moves into useRecentCloudProjects so the screen can hand the same result to the grid and to the notice. Signed out, or with Edge out of reach, that notice sits above the grid, which then shows the local projects only. The cloud side still lists the 5 most recent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0154FaQPkADqHmwy9B3grDcV
The grid fills the column's height, and a wrapping flex container stretches its rows to fill it by default, so a short list showed large blank bands between the rows. The rows now stack from the top with the same 25px gap used between the folders on each row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0154FaQPkADqHmwy9B3grDcV
…rcat-add-selected fix(ethercat): serialize Add Selected and show progress while slaves load (DOPE-683)
…taged rollout Every editor from 4.1.0 on already runs electron-updater against GitHub Releases, so the first release with latest-*.yml reaches the whole macOS and Linux fleet. Update artifacts get space-free names, the release is created as a draft and published only after verify-release-assets.js checks every file against its metadata (and refuses Windows metadata), stable tags need a published rc, and stable releases start at stagingPercentage 1, widened by the Raise Release Stage workflow. DOPE-486 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One check per launch, a background download only where the editor can write, and the install on quit or on request, through the quit coordinator so the unsaved-project prompt always runs. On Linux the AppImage is installed without launching and reopened by a detached shell once this process exits (app.relaunch cannot run from the FUSE mount); on macOS the update counts as ready only once Squirrel says so. A version that fails to install on two starts is never offered again. Windows stays off until its installers are signed. DOPE-486 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A dialog for an automatic update was too intrusive, so a downloaded update now shows as a blue "Update to X" button at the right of the status bar, on the start screen and in the workspace. AppUpdatePort is optional and the web has no adapter, so the shared files are mirrored in openplc-web without showing anything there. A restart the user asked for skips the quit confirmation when nothing is unsaved. DOPE-486 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DOPE-486 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er area A located %M declaration used to size its own area, so `AT %MW100` alone handed the project 101 memory words while the same declaration on %I or %Q was validated against the image and refused. Memory now follows the same rule: the size comes from the producers and the server exposure, and a declaration nothing backs fails the compile. Drops the `declarations` origin, which becomes unreachable once no declaration can size an area. Regroup the unbacked-address report by area. One paragraph per area instead of one per variable, at most five names before the list is cut short, the scope printed only when it changes, and the slot named only for an array, where the address alone does not say how far the declaration reaches. The remedy is stated once and points at the explorer branches that host a producer rather than at the protocols, since a Modbus point, an EtherCAT channel, a VPP module slot and a pin are four answers that all live under Device, Remote Devices or Servers. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PZgma1sYBWkAnwFNrTDa71
DOPE-695: Start screen, one Projects grid for cloud and local projects
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013SnDAM2L6zbrSC1nnZbC5a
…96-claude-md-harness
The user should be told a new version exists and decide, with the same flow on Windows, macOS and Linux (feedback on DOPE-486). The editor now reads the GitHub releases API once per launch; a newer version shows "Update to X" in the status bar, and clicking it downloads the installer for this OS and architecture, checks its sha256 against the digest GitHub publishes and opens it. The user installs. electron-updater, the release metadata, the staging and the release gates are gone: releases must keep not publishing latest*.yml, because editors 4.1.0 to 4.3.2 would install it on their own. DOPE-486 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…86-desktop-editor-auto-updater # Conflicts: # src/frontend/screens/start-screen.tsx
An ESI can declare the same object in several alternative PDOs (the Delta ASDA-A2-E has 0x6041 in TxPDOs 0x1A00-0x1A03). Every PDO got channels and IEC addresses, so the EtherDOG iomapping mapped one entry several times and the build failed, and the busconfig listed PDOs the slave never maps. Channels and default mappings now come from the PDOs the ESI assigns (Sm or Mandatory, all of them when it marks none). Persisted PDOs record whether they are assigned, and only assigned PDOs and their channels reach the bus configuration. A project saved before this records the assignment when the slave is opened in the EtherCAT editor, keeping the addresses of the channels that remain; until then the duplicate error says so. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adapt the incoming changes to store injection: the EtherCAT editor, the AI inline completions and the tests from DOPE-675/683/684/686/695 now take the store instead of reading the removed singleton. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtYq3BPp8pWQj7z28DcKKa
…re-di refactor(store): inject the store instead of a module singleton (mirror of web#799)
…uild The project adapter now takes the store to read the system libraries for a pending PLCopen import, since the store singleton is gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtYq3BPp8pWQj7z28DcKKa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtYq3BPp8pWQj7z28DcKKa
…blocks - A rung kept in its XML layout now gets the resolved block signature, so its blocks no longer transpile with no inputs. - Extensible library blocks (ADD, AND, MUX...) grow to the IN<n> pins the XML names instead of falling back. - Separate the fallback reasons for an unknown pin and a variable box on the main pin. - Cap the series-parallel reduction at 200 elements per rung. Refs DOPE-685 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WbZT3t6bY2W7BnCJJJYjV6
feat(pin-mapping): per-pin pull-up/pull-down for digital inputs
…29-modbus-io-group-import-export
A clipped TruncatedText is a tab stop and focusing it opens the full value; values that fit stay out of the tab order. Tracks clipping as the column resizes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…io-group-import-export DOPE-729: Import and export Modbus remote device IO groups as CSV or JSON
The runtime refuses an upload with HTTP 200 and the reason in UploadFileFail. Reading the status code alone, the editor logged the upload as successful, polled a build that never started and showed only "Compilation failed (exit code: 1)", hiding why the device said no. A non-empty UploadFileFail now fails the upload with the runtime's own message, as the web client already does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The build checked every EtherDOG runtime against the fixed arrays of the EtherDOG shipped with runtime 4.3.0 and 4.3.1, so a slave with more than 32 startup SDOs, among others, failed to build for runtimes whose EtherDOG sizes them from the configuration. The limits now follow the runtime version: 4.3.2 and newer are only bounded on masters, names and IEC locations; older EtherDOG runtimes keep their fixed limits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two connected specs: the editor reports the runtime's reason when it refuses an upload, and a CiA 402 drive with 40 startup SDOs builds and uploads to a runtime whose EtherDOG has no fixed SDO limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fixed limit set now extends the dynamic one, so the four limits every EtherDOG runtime enforces live in one place. The upload refusal reason is passed on exactly as the runtime sent it, and the connected specs use the CLI's real user-data flag, leave the runtime idle when they finish and skip on a runtime they do not apply to. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…efusal-and-sdo-limit DOPE-749: Show runtime upload refusals and bound EtherCAT limits by runtime version
The preview effect listed the state it sets in its own dependency array, so setting 'loading' re-ran it and the cleanup cancelled the render in flight. Guard the start with a ref instead, and reset it when leaving the preview step or closing the wizard. Co-Authored-By: humorwuwu <86499959+humorwuwu@users.noreply.github.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The return type and array base type lists grew with their 22 entries and clipped the overflow, so everything past DT was unreachable. Cap their height and let them scroll, like the other type dropdowns. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A node's `numericId` and the shape name under `variant` are the graph's own, not something the user wrote, so a search for `default` or for a digit run listed rows on nodes nobody typed into. Both are skipped now, `variant` only when it is a string: a block keeps its signature object there, and its name stays searchable. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… sleep Review findings: - A failed save sends the wizard back to the preview with the render guard still set, and nothing proved the bytes survive it. A case now exports with a refused save and asserts Export comes back enabled with a single render. - The mocked service was reached through `as unknown as jest.Mock`, which hides the real signature. `vi.mocked` carries it instead, and the render result type is read off the service rather than restated. - The e2e slept five seconds after opening the project: too short if loading is slow, wasted otherwise. It waits for the POU on the explorer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…eeping Review findings: - The height expectation reached through a non-null assertion. The box is narrowed explicitly now, and the popup's top and bottom edges are checked too: a list can fit the window and still hang off it. - A four second sleep stood in for the project being open. It waits for the POU on the explorer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…search-occurrences DOPE-746: Search in Project lists every occurrence, and counts what the tree shows
…eeds-a-producer DOPE-744: Point an unbacked memory address at the Buffer Mapping that can size it
…df-preview-cancels-render DOPE-751: Fix the export-to-PDF preview that cancelled its own render
…pdown-scroll DOPE-752: Cap the IEC type dropdowns so they scroll inside the window
Contributor
|
Important Review skippedToo many files! This PR contains 765 files, which is 665 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files.
|
JulioSergioFS
approved these changes
Oct 28, 2026
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.
Promote
developmenttomainfor the 4.3.3 release.APP_VERSIONandpackage.jsonare already 4.3.3 ondevelopment.🤖 Generated with Claude Code