<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" 
	>
<channel>
	<title>
	Comments on: LH Spreadsheets	</title>
	<atom:link href="https://lhero.org/portfolio/lh-spreadsheets/feed/" rel="self" type="application/rss+xml" />
	<link>https://lhero.org/portfolio/lh-spreadsheets/</link>
	<description>Digital Sovereignty for everyone</description>
	<lastBuildDate>Sun, 25 Oct 2026 02:03:30 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-spreadsheets/#comment-1537709</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Sun, 25 Oct 2026 02:03:30 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?post_type=lh-portfolio&#038;p=152395#comment-1537709</guid>

					<description><![CDATA[The spreadsheet grid now fills the editor canvas exactly: it sizes itself from its top edge to the bottom of the editor window, and the canvas no longer scrolls, so there is no empty space below the sheet tabs.]]></description>
			<content:encoded><![CDATA[<p>The spreadsheet grid now fills the editor canvas exactly: it sizes itself from its top edge to the bottom of the editor window, and the canvas no longer scrolls, so there is no empty space below the sheet tabs.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-spreadsheets/#comment-1537689</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Sat, 24 Oct 2026 15:44:53 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?post_type=lh-portfolio&#038;p=152395#comment-1537689</guid>

					<description><![CDATA[Rebuilt so the spreadsheet editor works in the WordPress 7.0+ block editor; breaking changes, hence 2.0.0. The block editor stays the shell, so spreadsheets keep their title, description, statuses, author, revisions and the editor&#039;s collaboration features, but the Univer grid now runs inside the editor canvas iframe. It is built as a separate self-contained script that is loaded only into that iframe and only on the spreadsheet editor screen, instead of being bundled into the block script that runs in the parent admin window, which is why the grid never rendered before. The workbook is now stored as an object in the block&#039;s workbook attribute instead of a JSON string in sheetData, roughly halving its stored size; existing spreadsheets are converted when opened. Changes are saved only when the workbook really changes, instead of every 3 seconds, so opening a spreadsheet no longer marks it as edited. The post type uses a locked one-block template. The REST API at lh/v1/spreadsheets reads and writes the workbook as an object (workbook) instead of raw post content, keeps backslashes intact, checks delete and publish permissions properly and returns 201 on create. The plugin now follows the current LH structure: a singleton bootstrapped on plugins_loaded with the lh_spreadsheets_init_plugin filter, a filterable post type, no constants, plugin_version() read from the header, index.php guards and Requires headers. Univer is pinned to 1.0.4 and its build is ASCII-only, so it loads whatever charset the server sends.]]></description>
			<content:encoded><![CDATA[<p>Rebuilt so the spreadsheet editor works in the WordPress 7.0+ block editor; breaking changes, hence 2.0.0. The block editor stays the shell, so spreadsheets keep their title, description, statuses, author, revisions and the editor&#8217;s collaboration features, but the Univer grid now runs inside the editor canvas iframe. It is built as a separate self-contained script that is loaded only into that iframe and only on the spreadsheet editor screen, instead of being bundled into the block script that runs in the parent admin window, which is why the grid never rendered before. The workbook is now stored as an object in the block&#8217;s workbook attribute instead of a JSON string in sheetData, roughly halving its stored size; existing spreadsheets are converted when opened. Changes are saved only when the workbook really changes, instead of every 3 seconds, so opening a spreadsheet no longer marks it as edited. The post type uses a locked one-block template. The REST API at lh/v1/spreadsheets reads and writes the workbook as an object (workbook) instead of raw post content, keeps backslashes intact, checks delete and publish permissions properly and returns 201 on create. The plugin now follows the current LH structure: a singleton bootstrapped on plugins_loaded with the lh_spreadsheets_init_plugin filter, a filterable post type, no constants, plugin_version() read from the header, index.php guards and Requires headers. Univer is pinned to 1.0.4 and its build is ASCII-only, so it loads whatever charset the server sends.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
