<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.ooda.wiki/index.php?action=history&amp;feed=atom&amp;title=Scribo_%28AetherOS%29</id>
	<title>Scribo (AetherOS) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.ooda.wiki/index.php?action=history&amp;feed=atom&amp;title=Scribo_%28AetherOS%29"/>
	<link rel="alternate" type="text/html" href="https://www.ooda.wiki/index.php?title=Scribo_(AetherOS)&amp;action=history"/>
	<updated>2026-04-25T11:38:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.ooda.wiki/index.php?title=Scribo_(AetherOS)&amp;diff=679&amp;oldid=prev</id>
		<title>AdminIsidore at 15:02, 26 August 2025</title>
		<link rel="alternate" type="text/html" href="https://www.ooda.wiki/index.php?title=Scribo_(AetherOS)&amp;diff=679&amp;oldid=prev"/>
		<updated>2025-08-26T15:02:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.ooda.wiki/index.php?title=Scribo_(AetherOS)&amp;amp;diff=679&amp;amp;oldid=678&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>AdminIsidore</name></author>
	</entry>
	<entry>
		<id>https://www.ooda.wiki/index.php?title=Scribo_(AetherOS)&amp;diff=678&amp;oldid=prev</id>
		<title>AdminIsidore at 19:49, 25 August 2025</title>
		<link rel="alternate" type="text/html" href="https://www.ooda.wiki/index.php?title=Scribo_(AetherOS)&amp;diff=678&amp;oldid=prev"/>
		<updated>2025-08-25T19:49:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.ooda.wiki/index.php?title=Scribo_(AetherOS)&amp;amp;diff=678&amp;amp;oldid=677&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>AdminIsidore</name></author>
	</entry>
	<entry>
		<id>https://www.ooda.wiki/index.php?title=Scribo_(AetherOS)&amp;diff=677&amp;oldid=prev</id>
		<title>AdminIsidore: Created page with &quot;{{Scribo Version|1.1.0}} {{Project Status|Alpha}} &#039;&#039;&#039;Scribo&#039;&#039;&#039; is a command-line utility designed to intelligently and automatically apply code changes from a revised file to an original source file. It streamlines the development workflow by eliminating the tedious and error-prone task of manual code merging for discrete revisions. It was co-developed by Isidore Lands and the AetherOS architect, Alex.  The system is architected as a &quot;diff-and-appl...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.ooda.wiki/index.php?title=Scribo_(AetherOS)&amp;diff=677&amp;oldid=prev"/>
		<updated>2025-08-25T17:05:35Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Scribo Version|1.1.0}} {{Project Status|Alpha}} &amp;#039;&amp;#039;&amp;#039;Scribo&amp;#039;&amp;#039;&amp;#039; is a command-line utility designed to intelligently and automatically apply code changes from a revised file to an original source file. It streamlines the development workflow by eliminating the tedious and error-prone task of manual code merging for discrete revisions. It was co-developed by &lt;a href=&quot;/index.php?title=User:Isidore_Lands&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Isidore Lands (page does not exist)&quot;&gt;Isidore Lands&lt;/a&gt; and the AetherOS architect, Alex.  The system is architected as a &amp;quot;diff-and-appl...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Scribo Version|1.1.0}}&lt;br /&gt;
{{Project Status|Alpha}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Scribo&amp;#039;&amp;#039;&amp;#039; is a command-line utility designed to intelligently and automatically apply code changes from a revised file to an original source file. It streamlines the development workflow by eliminating the tedious and error-prone task of manual code merging for discrete revisions. It was co-developed by [[User:Isidore Lands|Isidore Lands]] and the AetherOS architect, Alex.&lt;br /&gt;
&lt;br /&gt;
The system is architected as a &amp;quot;diff-and-apply&amp;quot; toolset, consisting of a patch generation script and a background watcher that applies patches automatically.&lt;br /&gt;
&lt;br /&gt;
== Architecture and Philosophy ==&lt;br /&gt;
The core philosophy of Scribo is to make the revision process invisible and robust. A developer should only need to be concerned with writing the code, not the mechanics of integrating it. Scribo achieves this by:&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Formalizing the Patch:&amp;#039;&amp;#039;&amp;#039; Creating self-contained patch files that include all necessary metadata, eliminating ambiguity.&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Automating the Application:&amp;#039;&amp;#039;&amp;#039; Using a background file system watcher to apply these patches the moment they are created.&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Ensuring Code Quality:&amp;#039;&amp;#039;&amp;#039; Automatically running formatters and linters (like Black and Ruff) on every patched file.&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Learning from Failure:&amp;#039;&amp;#039;&amp;#039; Establishing a quarantine system for failed patches, which form the basis of a regression testing suite.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Scribo is designed as a global command-line tool using `pipx` to ensure it operates in an isolated environment and does not conflict with project-specific dependencies.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
*   Python 3.8+&lt;br /&gt;
*   [[https://pypa.github.io/pipx/ pipx]]&lt;br /&gt;
*   [[https://git-scm.com/ Git]]&lt;br /&gt;
&lt;br /&gt;
=== Installation Steps ===&lt;br /&gt;
1. Clone the repository from GitHub:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
git clone https://github.com/IsidoreLands/scribo.git&lt;br /&gt;
cd scribo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Use `pipx` to install the package from the local directory. This will build the tool and make the `scribo-diff` and `scribo-watcher` commands globally available.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
pipx install .&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Create the inbox directory that the watcher will monitor:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mkdir ~/scribo_inbox&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Operation ==&lt;br /&gt;
The standard workflow involves two components: the patch generator (`scribo-diff`) and the background watcher (`scribo-watcher`).&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Run the Watcher ===&lt;br /&gt;
In a dedicated terminal, or as a background process (e.g., in `tmux` or `screen`), start the watcher. It will now monitor the inbox for incoming patches.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scribo-watcher&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The watcher will provide real-time feedback as it processes files.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Generate a Patch ===&lt;br /&gt;
As a developer, you have your original file (e.g., `project/module/guide.py`) and you have created a revised version (e.g., `/tmp/guide_revised.py`).&lt;br /&gt;
&lt;br /&gt;
To integrate the changes, run the `scribo-diff` command:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scribo-diff project/module/guide.py /tmp/guide_revised.py&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What this command does:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Calculates the `diff` between the two files.&lt;br /&gt;
# Creates a new patch file inside `~/scribo_inbox/`. The patch file is named with a timestamp for easy tracking (e.g., `20250825-171500-guide.patch`).&lt;br /&gt;
# Critically, it embeds the absolute path of the &amp;#039;&amp;#039;&amp;#039;original&amp;#039;&amp;#039;&amp;#039; file inside the patch, so the watcher knows which file to modify.&lt;br /&gt;
&lt;br /&gt;
The moment this file is created, the `scribo-watcher` will detect it, apply the patch, run formatters, and clean up. Your work is done.&lt;br /&gt;
&lt;br /&gt;
== Development Journal ==&lt;br /&gt;
This section documents the ongoing development, architectural decisions, and future roadmap for Scribo.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.1 (Current) ===&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Architecture Refactor:&amp;#039;&amp;#039;&amp;#039; Split the original monolithic `patcher` script into a two-part system: `scribo-diff` and `scribo-watcher`. This enables true background automation and a more robust workflow.&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Formalized Patch Format:&amp;#039;&amp;#039;&amp;#039; Patches now contain a metadata header specifying the target file path.&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Quarantine System:&amp;#039;&amp;#039;&amp;#039; Added logic for the watcher to move failing patches to a `~/scribo_inbox/quarantine/` directory for later analysis.&lt;br /&gt;
&lt;br /&gt;
=== Roadmap (Future Development) ===&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Test Harness Implementation:&amp;#039;&amp;#039;&amp;#039; Develop a `pytest` suite that automatically discovers and runs tests against patches in the `quarantine/` directory. This will form the core of the &amp;quot;self-learning&amp;quot; capability, ensuring that once a bug is fixed, it never returns.&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Conflict Resolution UI:&amp;#039;&amp;#039;&amp;#039; For patches that cannot be applied cleanly, develop a simple TUI (Text-based User Interface) that presents the conflicting hunks to the user for manual resolution, similar to `git mergetool`.&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Plugin System:&amp;#039;&amp;#039;&amp;#039; Allow for custom post-patch scripts. For instance, a user might want to run project-specific tests or trigger a notification after a successful patch.&lt;br /&gt;
*   &amp;#039;&amp;#039;&amp;#039;Remote Inbox:&amp;#039;&amp;#039;&amp;#039; Explore options for using a shared directory (e.g., on a NAS) or a simple message queue as an inbox, allowing for distributed development workflows.&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
*   The official source code is hosted on GitHub: [[https://github.com/IsidoreLands/scribo]]&lt;/div&gt;</summary>
		<author><name>AdminIsidore</name></author>
	</entry>
</feed>