PyCForge 1.3.57 — Character map
Prepared 2026-10-21 from the verified 1.3.56 source archive.

IMPLEMENTATION

Character Map is available from Edit, the Python editor context menu and the
main toolbar through one shared action. Its white page / blue Omega icon is
drawn at multiple resolutions. One modeless dialog is created only on request.

The dialog has a transparent single-line edit field above the grid, a gray
underline that becomes blue when focused, and Copy on the right. Clicking a
character inserts it at the caret or replaces the current selection. Copy
copies the entire line exactly; empty Copy is disabled. Normal typing,
selection and Undo work within the line. Copy does not edit a source buffer.

Grid buttons have exactly two painted states: resting and pressed. Hover,
keyboard focus and window activation do not change their appearance, and
there is no latched selection highlight. Release, focus loss, hide and window
deactivation clear the pressed state. The grid has one Tab stop; arrows, Home
and End navigate, and Space or Enter inserts. Character names and Unicode
values appear below the grid and in tooltips. Keyboard movement scrolls the
focused character into view.

Fourteen compact groups cover common characters, Basic Latin, Latin accents,
combining marks, Greek, Cyrillic, punctuation, currency, arrows, mathematics,
box drawing, shapes, symbols and dingbats. Controls, formatting instructions,
unassigned values and line separators are omitted. Combining marks display
on a dotted circle but insert literally; space labels also copy literal spaces.
The groups are a compact selection, not a complete Unicode catalog. Glyph
coverage depends on installed fonts. The line holds up to 4,096 UTF-16 units.

The character grid reflows with window width. Its own scrolling keeps the
text line, Copy and title controls visible on a small or highly scaled desktop.
The actual themed Qt dialog was visually reviewed at 100% (620 x 552 logical
pixels) and 200% (368 x 368 logical pixels on a 400 x 400 work area).

PRESERVATION

Character-map text remains in memory for the current workspace; there is no
settings store or project/file access. The implementation does not subscribe
to typing, clipboard changes or background work and never opens automatically.
There are no character-map progress dialogs. Existing clipboard and editor
progress behavior is unchanged. Generated C remains read-only.

A byte comparison with the 1.3.56 archive confirms 32 protected modules are
identical, including file/save/project/session/controller modules, workspace
settings, the editor and Python/C surfaces, C projection, window chrome, the
advanced clipboard, copy/cut hooks, buffer loading and paste/progress modules.
All 144 converter files and 896 existing runtime files are unchanged. Six
existing runtime files change only for version, the new action, dialog
lifecycle wiring and Help. Three new modules implement the character map.

README changes only its heading to 1.3.57. The prose and four approved image
URLs, widths and positions are unchanged. AGENTS.md and the README guidelines
are retained unchanged. Dependencies, entry points and project formats match
1.3.56. No publication is performed; CC handles PyPI from CC's own computers.

VALIDATION

Linux, Python 3.12, PySide6/Qt 6.12; Qt offscreen rendering.
21 new interaction tests pass, including actual button-pixel comparison across
hover/focus/press/release, keyboard activation, interrupted presses, Unicode
selection replacement and copying, native Undo, literal combining marks and
spaces, underline focus colors/transparency, scrolling, resize and lifecycle.

A real saved-project workflow checks the exact Python-file and project-bundle
bytes before and after opening, composing, copying and closing Character Map.
Document records and dirty state remain identical, no Save All is required,
advanced clipboard history remains untouched and generated C stays read-only.
Typing and IME in both Python panes and external clipboard changes never open
the character map.

The broader targeted suite covers 263 tests and 891 subtests. Its first run
passed 261 tests and all 891 subtests; two release-contract assertions still
expected the old 1.3.56 version. Those expectations were advanced to 1.3.57,
and both failing cases were rerun and passed. No runtime changes were needed
after that suite. The final result covers all 263 targeted cases, including
the 21 character-map cases, 30 clipboard cases, 36 editor-progress cases,
16 saved-workspace regressions and source loading/resource, editing/undo,
menu/action, Help and shared-chrome checks.

Exact action/menu inventory tests now include the additional Character Map
action; their assertions remain exact. Two warnings concern Qt's deprecated
drag-enter constructor in existing tests. No product failures or warnings
were suppressed. Initial interaction testing caught selection loss caused
by the grid's scroll area taking focus; it was fixed and all 21 cases rerun.

Known inherited structural failure: qt_window_chrome.py remains 641 lines,
while an older test in test_phase15c_qt_workspace_integration.py requires
fewer than 600. Its implementation and assertion are unchanged. This failure
was reproduced on the prior baseline and documented in 1.3.56; it is outside
the targeted suite above. This report does not claim a clean full test suite.

The source includes specifications/character_map_1_3_57.md, interaction tests,
evidence/character_map_1_3_57, and tools/review_charmap_1_3_57.py for repeatable
rendering. The downloadable report appends checks on the exact final packages,
their SHA256 values, installed-wheel tests and displayed-version verification.

NATIVE DESKTOP CHECK

Install the wheel from its folder:
  py -m pip install --upgrade .\pycforge-1.3.57-py3-none-any.whl

Open Character Map from all three access points. Compose text, replace a
selection, Copy and paste into Python normally. Move over the grid, press
and release a character, then use Tab/arrows/Space. Confirm there is no hover
or retained pressed highlight and the line's underline follows its focus.
Check at the native display scale. Native Windows and macOS interaction
was not available here; Linux offscreen tests cannot establish that behavior.

Source baseline SHA256:
10fe706e263601ac55d5cd27edf692e04eb7c7966f5aef295822c699d8b3665f
