Windows prints through the system dialog at the document's paper;
Linux through the desktop portal, the dialog's choices laid out by Ely.
Round 3 findings fixed without a further review, as the rules say.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
R6.12: on macOS the worker sets LibreOffice's own NSApplication to the
accessory policy before the kit starts, so it never shows in the Dock.
R6.13: when the whole slide fits, the wheel and Up/Down (nothing
selected, no text editing) turn slides in the ElyShow editor.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
git::own returns git::NoGit when neither the app nor ElyTree has Git;
ElyMark's Git item then reads 'needs ElyTree'. Linux AppImages stand
alone, so ElyMark keeps its Git there (packages share the AppDir).
The bundle fixture now has ElyTree's executable folder.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Component 93efa7f draws soft breaks as lines (Typora's default when
writing); exports and copies read with MarkdownReader::joined, as GFM.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
An explicit open checks the session registry by file identity, so a
hard link to a shown file joins the list. Ticked after round 3.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Opening a file a tab already shows only focuses it; the recent list
now learns it too. The restart regression reopens the restored file.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A tab reopened from the session counts as already remembered, so
clearing the list survives a restart; explicit opens still join it.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A Clear Recent Files button under the list writes an empty recent.json
(ely_files::recent::clear); a failure is shown, not swallowed.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A real keyboard reports Shift plus punctuation as the character on every
platform, so the Windows key-name bindings never fired. Windows also
keeps Ctrl+Shift+0 for Chinese input; Actual Size adds Ctrl+Shift+9.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The copy guard also compares the clipboard's HTML, which gpui omits,
so a later rich copy with the same plain text is not overwritten.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A pending conversion no longer overwrites a later clipboard write; pin
moves to component 2b8bd9f (one-pass drawn lookup, latest press wins).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copy as Rich Text, HTML Code and Plain Text convert off the window
thread; a newer copy cancels an older one. Offer hands its request to
the menu host once, so a dismissed menu stays shut when its tab returns.
ElyMark Delete Image now targets the pressed picture (component a4bf696).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- ely-ui passes its resolved locale to Windows text layout, so
Chinese UI lays out as Chinese whatever the Windows region.
- Component a4bf696: Find box, sort and filter builders and
password tooltips read the catalog; stricter shipped-copy scan.
- ElyMark deletes the right-clicked picture (delete_image(at)).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
R4.10. Clipboard row, Copy / Paste As, format and block rows, Table or
Paragraph, Insert, link, image, code and raw-block items; source and
preview menus. Component pin 1b5fb07. Records the user's rule that
ElyMark must work, not match Typora one to one.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Delete Table in an open block leaves focus on the document; Windows-only
import gated; menu tests run on Windows and Linux only.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Menus act on an open block's selection (component 6d90351), clipboard
keys reach a focused field outside the document, Strike binds per
platform, platform-correct key tests, Delete Table in the table menu
(component 24ffc45), short comments. Pin 6b033f3 -> 24ffc45.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Paragraph and Format menus with Typora's items, labels and keys; Table
is a Paragraph submenu with row and column moves and source tidy.
Ctrl+/ toggles source, F8 focus, F9 typewriter, Ctrl+Shift+=/-/0 size,
Ctrl+Shift+C copies as Markdown, Ctrl+Shift+V pastes as plain text.
Refused commands show why, including refusals read in the background.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The strip's list sat in a ContextMenu host with no size, so it grew
with its content and never overflowed. The host now fills its column,
as ElyPDF's do; a 24-slide test wheels to the last slide.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The canvas offers Ely's menu by target: slide (layouts, comment), text
(bullets, numbering, comment), shape or text box, picture (replace,
crop), table (insert, delete, merge), each item gated by the kernel's
state for its own command. Impress's table borders read as text and
drag through R5.3's path; patch 0047 reports every edge's bounds and
makes the left edge drag. A line past its bound never moves against
the drag, so a still press sends nothing.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Grid and header menus share ely_office::menu with ElyDoc. Each item's
availability is the kernel's state for the exact command it runs
(patch 0045). Patch 0046 lets a header select its row or column while
a shape is selected or its text is edited: the view shell ends the
drawing edit, keeps the typed text, leaves drawing mode, then marks.
Ely no longer sends Esc first.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
HTML export, plain text and rich copy read each paragraph, heading,
cell and HTML block through the component's MarkdownReader (pin
1251221). Emoji, alerts, the TOC and inline tags match visual mode.
Footnotes sit in place as [n]; link titles are not written.
Three review rounds failed; round 3's one finding (a scan per
footnote over open marks) is fixed with a growth regression, unreviewed.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>