PyCForge 1.3.56 — Advanced code clipboard
Prepared 2026-10-21 from the verified 1.3.55 source archive.

USER BOUNDARIES

The existing file/project/save/session implementation is unchanged. Generated
C remains read-only. Clipboard paste accepts only either of the workspace's
editable Python panes and validates the document identity and active module.
Clipboard management cannot set project/module dirty flags or write their data.

FEATURES

One modeless PyCForge Clipboard dialog is opened by the same action in Edit,
the Python editor context menu and the main toolbar. The toolbar uses a distinct
clipboard-stack icon drawn at multiple native sizes in the existing theme.
It never opens automatically while typing.

Copies and cuts from the Python panes and copies from generated C enter a
searchable recent history. External clipboard changes are not collected;
Add System Clipboard explicitly imports external text. Repeated identical
captures do not flood history. Clips carry language, original filename/line
range, UTC capture time, an editable name and a short note.

Recent history is memory-only. Explicitly pinned clips persist in the separate
PyCForge/Clipboard application preference namespace, outside project bundles,
workspace preferences and saved-file sessions. Corrupt/unavailable pin data is
not reset. Safe Start leaves pins untouched. A newer pin snapshot detected
from another window blocks overwriting it and explains how to reload.

Python and C previews are read-only. Search/filter, pin/unpin/delete, clear
recent clips, list-order moves and multi-clip joining are available. Exact
paste is the default; matching indentation and Python/C string-literal
transformations are explicit and previewed. Unicode inspection and visible
whitespace help identify unusual characters. C string literals represent UTF-8
bytes using fixed-width octal escapes where required.

Capture Python / C records a complete source bundle with the complete C output
from that exact successful conversion. It rejects pending/stale source and
identity edits. Module selection, side-by-side Python/C previews, Copy C,
version/mode/preferences and source freshness accompany the immutable capture.
It never guesses which arbitrary source selection produced a C fragment.

Paste returns to the displayed editable Python destination using the existing
native insertion path. It preserves Undo/Redo, multi-caret behavior and the
large-paste progress guards. Stale, closed, hidden, loading or read-only targets
cannot receive a paste. Browsing Clipboard from the C viewer does not silently
choose a Python destination. An empty selection cannot delete source text.

LIMITS AND PRESENTATION

History: up to 100 clips and 4,194,304 text characters. Individual clips and
combined/transformed operations: up to 524,288 characters. All pins together:
up to 1,048,576 characters. Normal oversized copies still reach the native
clipboard, but do not enter history. Cached search text and Qt views add memory
overhead. No workers or runtime dependencies are added.

Previews show up to 32,768 characters, with long lines shortened to 4,096.
Copy/Paste retains the full payload; preview shortening is labeled. Narrow
layouts stack controls and scroll while keeping title controls accessible.
Actual Qt dialogs were visually reviewed at 100% and 200% scale. The 200%
offscreen work area was only 400 logical pixels square; stacked controls and
scrolling kept the dialog within that small work area.

VALIDATION

Linux, Python 3.12.14, PySide6/Qt 6.12.0; Qt offscreen rendering.
Final targeted suite: 242 tests passed and 888 subtests passed.
This includes 30 new clipboard cases, all 36 editor-progress cases, all 16
saved-workspace regressions from 1.3.53, source loading/resource behavior,
editing/undo, actions/menus, Help, shared chrome and release contracts.

Real tests cover Copy/Cut and keyboard shortcuts, selection ownership,
multi-caret and split-pane paste, a large explicit paste with one-step undo,
native C typing/cut/paste/drop rejection, actual conversion-pair capture,
pending/stale source, pin restart persistence, corruption and write failures,
concurrent pin snapshots, safe start, search/reordering, full text behind a
shortened preview, Unicode and literal round trips, and lifecycle cleanup.

A saved-project workflow verified identical Python-file and project-bundle
bytes after copy, naming, pinning, searching, copying out and deletion. It
also verified unchanged document records, clean project state and no new
Save All requirement. C stayed read-only throughout.

Two warnings concern Qt 6.12's deprecated drag-enter constructor in tests.
No product warnings or test failures were suppressed. Existing exact action
and menu inventories were updated to include the one new Clipboard action.

Separately, an older structural test still fails: the unchanged
qt_window_chrome.py has 641 lines against a less-than-600 assertion in
test_phase15c_qt_workspace_integration.py. The same failure was reproduced
on the unmodified 1.3.55 baseline. Its test and implementation were not
weakened or changed. This is separate from the passing targeted suite above.
The initial integration run and baseline reproduction are retained as evidence.

PRESERVATION AND RELEASE

24 protected modules, including all checked file/project/save/session/controller
modules, workspace settings, core editor, source/C surfaces, C projection and
window chrome, are byte-identical to 1.3.55. All 144 converter files are
byte-identical. Across the runtime, 891 existing files are unchanged. Seven
existing files change only for UI actions/wiring, copy hooks, Help and version;
four new clipboard modules contain the implementation.

README changes only its version heading to 1.3.56. Its prose and exact four
approved images, banner positions and widths are unchanged. Project instructions
are retained unchanged. Dependencies, entry points and project formats are
unchanged. The source includes the clipboard specification, tests, scope
comparison and tools/review_clipboard_1_3_56.py for repeatable visual review.

The downloadable report appends final package hashes, distribution checks and
installed-wheel results. CC alone publishes to PyPI; no upload is performed.

WINDOWS ACCEPTANCE

Install from the wheel's folder:
  py -m pip install --upgrade .\pycforge-1.3.56-py3-none-any.whl

Open Clipboard from Edit, the Python context menu and the toolbar. Copy Python
and C, search, pin and reopen the app, then paste into each Python pane and
Undo. Confirm the generated-C pane remains read-only and merely managing clips
causes no save prompt. Capture a successful conversion pair, edit the source
and confirm the stored capture stays historical. Check dialog scaling and
keyboard focus on the native desktop. Windows/macOS interaction was not
available in this environment.

Source baseline SHA256:
48a1127f0f84655f54b1decfc08d6f1c68d6a52be486b56c8adb5f080b7fb4a4
