Conversation
The Chain-of-Thought review framework reads a file or a pull request and reports what it found; until now nothing in the IDE could reach it. It now sits with the other automation tools: Automation > Code Review reviews the file being edited or a pull request, and the output streams into a run window like any other run. One settings form holds what a review needs -- the inference backend and where it is, the code host, the repository -- and every one of those is handed to the child process as a PRTHINKER_* environment variable. That is deliberate for the keys and the token: a command line is visible in a task manager and lands in logs, and an environment variable does not. The framework installs from source rather than from PyPI, so the install entry asks for its folder once, remembers it, and installs that folder with its runner extras. It needs Python 3.12 or newer, which is a property of the interpreter chosen for running, not of the editor. A file has to be saved before it can be reviewed, and a pull request review needs a repository in the settings; both say so rather than starting a run that could only fail.
- zip() over request/name and node/offset pairs now uses strict=True; both rely on equal-length sequences, so a mismatch silently dropped items. - subprocess.run() calls that inspect returncode themselves now pass check=False explicitly. - Move the S310 suppression onto the Request() call it applies to; the directive sat on the following line and suppressed nothing.
DiagramEditorWidget.__init__ and DiagramPropertyPanel.__init__ each built their whole UI inline (101 and 106 statements); both are now split into per-section builders. tools_menu repeated the same eight-line action block seventeen times and kept a second copy of every widget factory. Tab and dock actions are now driven by tables sharing one _WIDGET_FACTORIES registry, matching the dispatch-table pattern the module already used for docks. Also gives ColorButton a per-instance default colour instead of one QColor built at import time and shared by every instance.
…can-fixes Fix zip and subprocess invariants, split oversized UI builders
architecture_explore.md walks the whole tree: the layer diagram, what each package does, where the design patterns land, the threading model behind the subprocess executors, where per-user data is persisted, and a running list of rough edges found while reading the code.
Twenty screenshots rendered from the actual widgets, each showing real input through the real code path: the curl and HAR importers generating scripts, the response inspector and header analyzer reporting on pasted traffic, the diagram editor laying out an imported Mermaid flowchart, and the run window streaming a genuine subprocess. The two thousand-word paragraphs on curl and HAR import are cut down to what the screenshots do not already say. Adds a testing and CI section, and drops the claim that language plugins ship with the project — exe/jeditor_plugins/ does not exist, so PLUGIN_GUIDE.md describes them as examples instead.
Half the file was generic Python knowledge — PEP 8 naming, f-strings over %, is None, enumerate, mutable defaults — that carried no information about this project. That collapses to one line deferring to ruff, leaving the rules that are actually specific here: the SSRF checklist and its reference implementations, the SSH host-key policy, why the embedded JupyterLab may leave its token empty, secrets travelling as environment rather than argv, and the complexity gates. 258 lines down to 130. The architecture tree had drifted past diagram_editor, tools_gui, dialog, prthinker and ten utils subpackages, so it is rewritten from the tree as it stands, with the CI matrix and the PackageManager description corrected to match. A new rule requires architecture_explore.md to be updated in the same change that makes it stale, which is what would have caught that drift.
Sphinx has provided project_copyright as an alias for copyright since 3.5, precisely so a conf.py need not redefine the builtin of that name. Using it clears the one issue Codacy reports against the repository and drops a noqa whose justification -- that Sphinx requires the exact name -- was not true. Verified by building the docs: the rendered footer is unchanged.
Automatic Analysis only ever looks at the main branch and at pull requests, so dev had gone unanalysed since the branch existed -- SonarCloud held one branch, last scanned weeks ago. The two analysis modes are mutually exclusive, so covering dev means turning Automatic Analysis off and running the scanner from the workflows instead. Both workflows gain a sonarcloud job on ubuntu, parallel to the test matrix. It is skipped on the nightly schedule, where re-scanning an unchanged commit adds nothing, and on fork pull requests, which cannot read the token. The scanner needs full history to attribute new code, hence fetch-depth: 0. .sonarcloud.properties was read only by Automatic Analysis; its settings move verbatim into sonar-project.properties alongside the project and organization keys the CI scanner needs.
The project key still carried AutomationIDE, the name the repository had two renames ago. SonarCloud can change a key in place, so the project was renamed to Integration-Automation_PyBreeze rather than recreated: all eleven analyses going back to October 2025 are intact, as are the quality gate and the branch settings.
Not up to standards ⛔🔴 Issues
|
| Category | Results |
|---|---|
| Security | 3 high |
🟢 Metrics 78 complexity · 0 duplication
Metric Results Complexity 78 Duplication 0
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
|
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.




Brings the accumulated
devwork tomain. Ten commits, of which six are fromthis round of documentation and CI work and four are earlier feature work that
had not yet been released.
Documentation
architecture_explore.mdis new: a module-by-module map of the tree — layers,what each package does, where the design patterns land, the threading model
behind the subprocess executors, where per-user data is persisted, and a list
of rough edges found while reading the code.
widgets, each showing real input through the real code path. The two
thousand-word paragraphs on cURL and HAR import are cut back to what the
screenshots do not already say, and a testing/CI section is added.
CLAUDE.mddrops the half of its content that was generic Python knowledge andkeeps what is specific to this project. Its architecture tree, which had
drifted past several packages, is rewritten, and a rule now requires
architecture_explore.mdto be updated in the same change that makes it stale.Static analysis
Analysis only ever looks at the main branch and at pull requests, so
devhadgone unanalysed since the branch existed. Both workflows gain a
sonarcloudjob, skipped on the nightly schedule and on fork pull requests.
Integration-Automation_AutomationIDEtoIntegration-Automation_PyBreeze;all eleven analyses back to October 2025 are intact.
docs/source/conf.pyno longer shadows thecopyrightbuiltin, clearing theone issue Codacy reports. Sphinx has provided
project_copyrightas an aliassince 3.5, so the rendered footer is unchanged.
Known red check
The
sonarcloudjob fails with "You are running CI analysis while AutomaticAnalysis is enabled". Disabling Automatic Analysis is a UI-only setting with no
API, so it needs one toggle at SonarCloud → PyBreeze → Administration →
Analysis Method. Everything else in the scan already works: the token
authenticates, the project and branch resolve, and quality profiles and active
rules load.