cjm-session-scratchpad-qt
The session scratchpad — composition seat v0 of the seat family (DECs 2a062aff + ea85eab7). A model-agnostic Qt surface for composing LLM session messages in markdown: session-key file naming from .cjm/current-session (kills the copy-previous + rename rituals), a one-key edit/rendered toggle held position-stable in both directions by per-block source-line anchors in the owned markdown->HTML pipeline, autosave-only persistence (debounced idle + toggle/focus-loss/close, atomic writes, watcher guard — no dialogs), and wrap-selection formatting verbs on the KeymapRegistry lane. Designed for accretion: live-session feature filings land on-graph and build in later sittings.
Modules
cjm_session_scratchpad_qt.__init__— Session scratchpad — composition seat v0 (DEC 2a062aff + ea85eab7). Model-agnostic by design: any LLM session's message composition surface.cjm_session_scratchpad_qt.app— The scratchpad shell: composition seat v0 (DECs 2a062aff + ea85eab7).cjm_session_scratchpad_qt.appv2— The graph-rung scratchpad shell: composition seat v2 (DEC 6e76c120).cjm_session_scratchpad_qt.cli— CLI entry for the session scratchpad (console scriptcjm-session-scratchpad-qt).cjm_session_scratchpad_qt.files— Session-aware file resolution (DEC ea85eab7 pts 1-2).cjm_session_scratchpad_qt.graph— One open graph behind the scratchpad — the workbench GraphSession patterncjm_session_scratchpad_qt.manifest— Pending-send manifests + pull-time reconciliation (DEC fc6a0cdc pt 5).cjm_session_scratchpad_qt.render— The owned markdown -> HTML pipeline (DEC ea85eab7 pt 4).cjm_session_scratchpad_qt.textops— Wrap-selection formatting operators (scope DEC 2a062aff pt 4) + the v2cjm_session_scratchpad_qt.timeline— Interleaved timeline derivation — the pure half of the v2 reading view.cjm_session_scratchpad_qt.timeline_html— Timeline HTML assembly — the pure presentation half of the v2 reading view.cjm_session_scratchpad_qt.watcher— Transcript-dir change detection — the sleep-first mtime poll's pure half.
API
cjm_session_scratchpad_qt.app
Editorclass — The source pane, with line-addressed viewport access for the toggle.ScratchpadWindowclass — One session file behind an edit/rendered toggle.block_line_mapfunction — Scan a rendered document for the renderer's Lxx anchors:mono_familyfunction — The rendered code font: the theme's mono token, else the system
cjm_session_scratchpad_qt.appv2
GraphScratchpadWindowclass — One session spine behind a timeline + part-composer.LanguageBarclass — The fence-language mini-bar: a completer-backed field; Enter applies,SessionPickerDialogclass — The open-session gesture's chooser: filterable Session list, newest
cjm_session_scratchpad_qt.cli
build_parserfunctionmainfunction
cjm_session_scratchpad_qt.files
Targetclassatomic_writefunction — temp + rename in the target dir: a mid-session agent read never seesensure_filefunction — Create the file blank if missing (sessions are born blank now);find_session_keyfunction — Walk up fromstartfor the nearest.cjm/current-sessionpointer.find_session_rootfunction — The nearest pointer AND the project directory that owns it:most_recentfunction — Newest markdown file by mtime (the absent-pointer fallback).parse_key_timefunction — A session key is its mint timestamp; None for legacy/free-form names.resolve_targetfunction — The launch contract: explicit path wins; otherwise the session
cjm_session_scratchpad_qt.graph
ScratchpadSessionclass — Sync facade over the projection layer for ONE session's scratchpad:bench_gesturesfunction — The scratchpad's canonical gestures for the scale harness (design detail 4389a579): itsdefault_transcript_dirfunction — The harness transcript dir for a project:~/.claude/projects/<slug>,part_payloadfunction — A composer part's mint/journal payload: composer-minted uuid (the
cjm_session_scratchpad_qt.manifest
PendingSendclass — One recorded compose-send awaiting its transcript echo.compose_textfunction — The outgoing message: parts joined as paragraphs, outer whitespace trimmed.load_pendingfunction — Read manifests; a missing or unreadable sidecar is an empty list.manifest_pathfunction — The session's pending-send sidecar.reconcilefunction — Match manifests against pulled user messages by EXACT text.save_pendingfunction — Persist manifests atomically (temp + rename; a concurrent read never
cjm_session_scratchpad_qt.render
RenderResultclassnearest_anchorfunction — The anchor line for a source position: greatest anchor <= linerender_htmlfunction — Render markdown to QTextBrowser-ready HTML with per-block source-line
cjm_session_scratchpad_qt.textops
WrapResultclassfence_selectionfunction — Toggle a code fence around the selected lines. An already-fenced blocktoggle_listfunction — Toggle list markers on the selected lines: strip when every non-blankwrap_selectionfunction — Togglemarkeraround [start, end) ofdocument.
cjm_session_scratchpad_qt.timeline
TimelineEntryclass — One timeline row, presentation-ready.build_timelinefunction — Derive the interleaved timeline: active-path status + birth-class flags,timeline_blocksfunction — Group consecutive off-path entries for the superseded-branch chip:
cjm_session_scratchpad_qt.timeline_html
build_timeline_htmlfunction — The whole timeline document: cards separated by rules, consecutivecard_htmlfunction — One message card: anchored header line (identity + affordances) +lane_filterfunction — The lane views: composition = composer-born, transcript = pulled.linkify_idsfunction — Wrap full node/source ids appearing as text in jump:// links —
cjm_session_scratchpad_qt.watcher
DirWatchclass — Cheap (mtime, size) fingerprint over a transcript dir's *.jsonl.
Dependencies
Depends on: PySide6, cjm-context-graph-layer, cjm-context-graph-primitives, cjm-context-graph-projection, cjm-substrate-qt-kit
Metadata
Release files for cjm-session-scratchpad-qt 0.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cjm_session_scratchpad_qt-0.0.7.tar.gz | 48.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cjm_session_scratchpad_qt-0.0.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 90.4 kB
Release files / cjm_session_scratchpad_qt-0.0.7.tar.gz
| Download URL | cjm_session_scratchpad_qt-0.0.7.tar.gz |
|---|---|
| Size | 48.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1fc7c42174452fe22646553095466120c5a294a5894f14fe4ea0e6bd4fb3524
|
|
BLAKE2b-256 checksum How to use checksums |
f7e8d94955b574b26a6118f4f1622edf448b747f1794d3b7e1ea5c79fbf0f6df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / cjm_session_scratchpad_qt-0.0.7-py3-none-any.whl
| Download URL | cjm_session_scratchpad_qt-0.0.7-py3-none-any.whl |
|---|---|
| Size | 42.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
660e76c7a58b230b37e1195f8e9f3ff56c7894a35f1225f089d5ba2846edb9e3
|
|
BLAKE2b-256 checksum How to use checksums |
7ab53ad94cf6adcfd627f7dbce0d66714e688fcc9ff6efb2705b643fe35b5615
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|