PyCForge 1.3.14 — Run Python and save controls

Installation
------------
The version remains 1.3.14. To replace an existing installation, run this from
the directory containing the new wheel:

  py -m pip install --force-reinstall --no-deps pycforge-1.3.14-py3-none-any.whl

Use the same Python environment that already runs PyCForge. The --no-deps form
is for an existing working installation; a fresh installation should omit it.
The complete ZIP contains the wheel and source tar.gz in its dist directory.

Behavior
--------
- Tools is a new top-level menu. Run Python… is its first item; F5 opens it.
- The command follows the selected tab, not the primary conversion module.
- A saved file supplies an absolute, quoted path. The working directory is
  the module's containing folder; the interpreter defaults to PyCForge's Python.
- A new file or any unsaved edit disables the command box and Run button and
  changes the custom titlebar to Run Python — Module not saved.
- The dialog is modeless. Save the module in the workspace to enable it without
  closing and reopening the dialog. Failed or cancelled saves do not enable Run.
- Each tab switch replaces the command with the new tab's default. Reset Command
  restores the default for the current tab. Extra arguments can be entered.
- Windows uses cmd.exe /d /v:off /s /k and python.exe, even when the application
  was launched with pythonw.exe. Linux uses an installed terminal. macOS uses
  Terminal. Default terminals stay open so output and errors remain readable.
- Saving disables Save Python in both the toolbar and File menu. A source edit
  enables both immediately, including edits in the split view. Save Python As
  stays available when no Python save is in progress. Save state belongs to
  each tab. The Save All update is described in PyCForge-1.3.14-Save-All.txt.
- Only an explicit Run executes the command. Opening, editing, selecting tabs,
  saving, conversion and analysis do not execute source automatically.
- Python imports use saved files on disk; save edited companions before running.

Validation
----------
226 tests and 769 subtests passed, with no skips in the final selected suite.
This covers the new command/dialog, asynchronous saves and edit-during-save,
shared actions, command palette, editor lifecycle, split view, Help links,
packaging metadata and existing 1.3.14 UI behavior. Saved and unsaved dialog
layouts were visually inspected with Linux offscreen Qt.

Actual POSIX subprocess checks verify local imports, relative file access,
arguments, interactive input, non-ASCII and shell-special paths, Python
exceptions and exit status. Native Windows and macOS launch contracts use mocks;
no claim of an interactive Windows/macOS terminal test is made. This environment
has no installed graphical terminal, so Linux graphical launching is covered
through terminal-argument tests rather than a live desktop terminal.

The first wider suite found two action-inventory assertions needing updates
for the added command. An existing asynchronous-open lifecycle assertion also
failed once before UI projection; it passed independently and in the final
combined suite without application or test changes. Original and final logs
are retained under evidence/run_python_1_3_14.

Windows laptop checks
---------------------
1. Open a saved Python file containing a print call. Confirm Save Python is
   disabled, Save Python As is enabled, and Tools → Run Python (F5) fills its path.
2. Click Run. Confirm a separate terminal prints the result and stays open.
   Test once with PyCForge started normally and once through pythonw.exe.
3. Edit the module with the Run dialog open. Confirm its title says Module not
   saved and its command box and Run button are disabled. Save; confirm both
   become available and both Save Python controls disable.
4. Try a new unsaved tab, saved tabs in different folders, and a file path with
   spaces. Confirm the dialog always follows the selected tab. Add a script
   argument, then use Reset Command. Check Save As updates the path.
5. Test input(), a local import, a relative file read, and a Python exception.
   Confirm input works, files resolve from the module folder, and errors remain
   visible. Confirm cancelling Save As or a failed save never enables Run.

No new Python dependencies were added. README and conversion behavior were
retained. Offline Help includes the Run Python and save-state instructions.
