Hi,

Here is a new version of Mapiah - v0.3.2 - the 
[Claude](https://en.wikipedia.org/wiki/Claude_(language_model)) release with 
lots of new features.

# Changelog

## 0.3.2 - 2026-03-19 - The 
[Claude](https://en.wikipedia.org/wiki/Claude_(language_model)) release
* New features:
* Copy/Paste functionality for elements (Ctrl+C / Ctrl+V or Meta+C / Meta+V) 
with cross-file support and automatic THID conflict resolution.
* Cut selected elements (Ctrl+X / Meta+X): copies elements to clipboard and 
deletes originals.
* Scrap duplication, copy, and cut from the available scraps panel.
* Multiple TH2 file open support with multi-selection in file dialog.
* Click-and-drag horizontal scrolling for tabs when many files are open.
* Mouse wheel scrolling support for tab bar.
* Tab drag-to-reorder: reorder file tabs by clicking and dragging them with 
visual insertion point indicator. [requested by Patrícia Finageiv]
* Command-line argument handling: positional arguments, --th2 (multiple), and 
--thconfig (single).
* Created enumeration-backed settings, including the new 
TH2Edit_newLineCreationMethod setting with localized enum values.
* Implemented selectable new line creation behavior for both the Mapiah 
quadratic mode and the xTherion cubic smooth mode with Ctrl-drag distance 
locking.
* Show Bézier control points during click-and-drag line creation: CP1 and CP2 
visible while dragging, with the dragged handle painted black and others white; 
control points disappear on mouse release.
* Per-scrap visibility toggle in the available scraps panel: each scrap row 
shows a checkbox to hide/show the scrap on the canvas. Hidden scraps cannot be 
the active scrap. The checkbox is hidden for the active scrap.
* Added toggle-all scrap visibility button above the scrap list; hides all but 
the active scrap when all are visible, or shows all when any are hidden. 
Tooltip and icon update dynamically to describe what the button will do.
* Added toggle-all image visibility button above the image list; hides all 
images when all are visible, or shows all when any are hidden. Tooltip and icon 
update dynamically to describe what the button will do.
* Scrap reordering via drag-and-drop in the available scraps panel, with 
animated insertion indicator. Reordering is undoable with Ctrl+Z 
(MPReorderScrapsCommand).
* Pasted elements are now automatically selected after a paste; if a scrap was 
pasted, the selection is cleared instead.
* Available images panel now supports click-and-drag reordering; image order is 
persisted in the TH2File top-level children list.
* Fixed bugs:
* Parsing error dialog now shows the file's basename and full path above the 
error list so the user knows which file caused the errors.
* When a file fails to parse, its tab is now automatically closed once the user 
dismisses the error dialog.
* Drag-to-reorder (scraps and images): items dropped on a lower-index row 
landed one position below the visual indicator when dragging downward 
(off-by-one due to removeAt index shift). Fixed by decrementing newIndex when 
oldIndex < newIndex.
* Drag-to-reorder (scraps and images): no drop zone existed after the last row, 
making it impossible to drag an item to the last position. Fixed by adding a 
trailing DragTarget with an animated insertion indicator below the last row.
* Duplicate scrap throws "Bad state: No element": duplicateScrap() was relying 
on the selection to find the new scrap MPID after paste, but pasteElements() 
now clears selection after pasting a scrap. Fixed by having pasteElements() 
return the top-level pasted MPIDs, which duplicateScrap() now uses directly.
* Duplicate (elements and scrap) was overwriting the clipboard; now saves and 
restores the clipboard around the internal copy so duplicate never affects 
clipboard contents.
* Added tests for duplicate-scrap (3208) and clipboard preservation during 
duplicate (3210).
* THAreaBorderTHID.thID not updated when border line THID is conflict-resolved 
during paste: when pasting an area with a border line into the same file 
(cross-scrap), the border line's THID gets a conflict suffix but the 
THAreaBorderTHID reference was never updated, causing crashes in MPSelectedArea 
creation. Fixed by tracking old-THID → new-THID in MPTHElementPasteAux and 
applying it in step 6.
* Duplicate scrap icon looking ugly.
* Failure decoding "therion.log". [reported by CaverBruce (issue 
[#17](https://github.com/rsevero/mapiah/issues/17))]
* Regular loop error reports being treated as actual errors.
* Non actual error should not be marked in red.
* RenderFlex overflow error when resizing window smaller than tab bar width.
* Tab drag-to-reorder functionality now properly reorders tabs without overflow.
* Drag feedback image now has rounded corners matching the tab style.
* Unable to open multiple files at once from home screen (first time opening 
files).
* Exception "No element with index '0'" when opening TH2 file from command line.
* Tab names now display without .th2 extension for cleaner UI.
* Creating a new file while another file is already open caused a "Multiple 
widgets used the same GlobalKey" crash due to a duplicate TH2FileTabsPage being 
pushed onto the navigator.
* Overlay windows left open on a tab were not closed when switching to another 
tab.
* Cross-file scrap paste via Ctrl+V did nothing: switching tabs stole keyboard 
focus to the outgoing canvas because clearOverlayWindows called requestFocus 
for every MPWindowType even with no overlay open. Fixed by guarding the 
requestFocus call with wasOpen, giving focus to the incoming canvas in 
setActiveTab, and adding a post-frame focus reaction in TH2FileTabsPage.
* Overlay windows on the current tab were not closed when opening or creating a 
new file.
* Test 3100 assertions now correctly expect TH2FileTabsPage instead of 
TH2FileEditPage.
* Copy/Paste logic refined: parents (scraps, areas, lines) materialized with 
empty childrenMPIDs and added at end position; children automatically populate 
parent childrenMPIDs when added to th2File. Border lines processed before areas 
during copy. (3/4 duplicate tests now passing)
* THID conflict resolution for elements with THIDCommandOption: duplicate 
pasted lines now get new unique THIDs when conflicts exist (all 5/5 duplicate 
tests now passing).
* Phase 6 validation tests for multi-element copy/paste: same scrap, across 
scraps, and cross-file paste with point + line + area elements and implicit 
border line inclusion (3164-3166).
* XTherion mode line creation with drag throwing.
* Available images reordering is now undoable/redoable and uses a dedicated 
"Reorder images" undo/redo label instead of the generic move-elements message.
* Scripts:
* Added sort_arb_files.dart script to sort ARB localization files 
alphabetically; runs flutter gen-l10n automatically only when files change.
* Pre-commit hook now runs sort_arb_files.dart and re-stages ARB and generated 
l10n files whenever an ARB file is staged.
* Infrastructure maintenance:
* Extracted TH2FileEditAreaLineCreationController: separated all area and line 
creation logic from TH2FileEditElementEditController into a dedicated MobX 
controller for better separation of concerns.
* Extracted TH2FileEditCopyPasteController: separated copy/paste/duplicate 
logic from TH2FileEditElementEditController into a dedicated MobX controller 
for better separation of concerns.
* Updated packaging/README.md to mention release constant.
* Removed Flathub files from scripts/update_flutter_and_mapiah_version.dart.
* Test for scrap duplication.
* update_flutter_and_mapiah_version.dart script updating release name and URL 
constants.
* Migrated from "rsevero.github.io" to "flatpak.mapiah.org" and updated all 
installation URLs in documentation and help files.
* Moved dart format from VSC to git hook.
* Including instructions to Claude update help pages when adding new features 
or changing existing ones.
* Added SPDX license identifiers to all Dart and Markdown source files.
* Updated pre-commit git hook to automatically add SPDX headers and copyright 
information to new Dart and Markdown files.
* Added comprehensive pre-commit hook documentation with examples and 
troubleshooting guide.
* Fixed pre-commit hook `sed -i` to `sed -i''` for Windows (Git Bash) 
compatibility; updated installation docs to mention Git Bash requirement on 
Windows.
* Renamed MPDuplicateElementResult parameters.
* Refactored THFile class rename: updated all variable names (thFile → th2File, 
_thFile → _th2File), related properties throughout the codebase, and THFile → 
TH2File in comments.
* Renamed `_filenameAndScrap` to `_currentScrapName` and updated to store only 
scrap name, not filename (filename is already shown in tab).
* Updated help pages (EN/PT) with documentation for scrap copy, cut, duplicate, 
and per-scrap visibility toggle.
* Added settings help pages (EN/PT) covering all settings and their sections; 
added help button to the settings page AppBar.
* Fixed help dialog rendering HTML comments (SPDX license headers) as visible 
text: markdown is now pre-processed to strip HTML comments before display.
* Fixed help dialog "Close" button being hidden when help content is long: the 
markdown body now scrolls independently while the Close button stays pinned in 
a visually separated footer.
* Improved image reorder drag feedback: dragged row disappears from the list 
while a semi-transparent row preview follows the cursor; an animated colored 
bar opens above the hovered drop target to indicate the insertion point. * 
Updated help pages (EN/PT) with documentation for image visibility toggle and 
image reordering via drag-and-drop.

Please report,

Rodrigo
_______________________________________________
Therion mailing list
[email protected]
https://mailman.speleo.sk/listinfo/therion

Reply via email to