Skip to content

Releases: FUR-Labs/fur-cli

v1.5.0 — Avatar Message Counts

18 Dec 23:20

Choose a tag to compare

Added

  • Avatar table now displays per-avatar message counts (includes both jot and chat messages).

Notes

  • No breaking changes.
  • Backward compatible.

v1.4.0 — Show Me the Meaning of Being Wordy 👦👦🏼👦🏻

10 Dec 17:46

Choose a tag to compare

👦👦🏼👦🏻 v1.4.0 — Show Me the Meaning of Being Wordy

New Command: fur show

This release introduces show, the intuitive, everyday way to display a full conversation with all message contents expanded.
It's the spiritual successor to timeline --verbose — but cleaner, shorter, and impossible to forget.

What’s new

  • fur show now presents the complete verbose timeline by default
  • Fully compatible with existing options (--pdf, --md, etc.)
  • Internally reuses TimelineArgs for maximum stability
  • Zero breaking changes; timeline remains intact

Why this matters

Users think in actions, not in --flags:

“Just show me the conversation.”

Compatibility

  • Backwards compatible
  • No schema changes
  • No migration needed

v1.3.0 — External Deep Clone Traveling ✈️

08 Dec 23:57

Choose a tag to compare

v1.3.0 — External Deep Clone Traveling ✈️

This release introduces the biggest structural capability FUR has gained since inception:
you can now deep-clone a full conversation — with all messages, metadata, branches, parents, timestamps, and Markdown attachments — into any other FUR project on your filesystem.

This makes FUR a true multi-project knowledge system.


🚀 New: xclone — External Deep Clone Command

You can now export a conversation from one .fur project into another:

fur xclone --to ../target-project

Or specify a conversation explicitly:

fur xclone --to ../target-project -i 8b

Use a custom title:

fur xclone --to ../target-project -i 73 --title "Backup of Judo Chapter"

What xclone does (fully automated):

  • Copies thread metadata into target/.fur/threads/
  • Copies all message JSONs into target/.fur/messages/
  • Properly rewrites all message IDs using a new UUID map
  • Properly remaps parents, children, and branches
  • Copies all Markdown attachments into target/chats/
  • Preserves Markdown relative paths (e.g. chats/xxx.md)
  • Auto-creates target/.fur/ + target/chats/ if missing
  • Updates target/.fur/index.json and sets the new conversation active
  • Guarantees a perfect deep structural clone, identical to the original

This unlocks:

  • Project-to-project story migration
  • Backups and snapshots
  • Exporting a conversation into a book folder
  • Sharing FUR conversation trees across repositories

🧭 Improved: Smart Truncated Conversation View

fur convo now defaults to a windowed, truncated table that always shows:

  • The active conversation (highlighted)
  • A few neighbors above and below
  • Ellipses (...) when rows are omitted

Example:

...
3ea36309   Chapter 7
b1e8f5ab   Chapter 14
8b7bfde7   How to Protect My Voice   <— active
7597d06d   Chapter 8
1c95673f   Chapter 2
...

This prevents massive scrolling in large projects.

Show full view with:

fur convo --all

🧩 Other Improvements

  • Internal refactors to prepare for cross-project operations
  • More robust detection and creation of .fur/ structure
  • Markdown clone suffix logic preserved (c, cc, ccc, etc.)
  • More stable rendering of conversation tables

🏁 Summary

FUR v1.3.0 is a substantial usability upgrade so far:

  • xclone brings multi-project workflows
  • Smarter conversation browsing improves daily use
  • Better file structure handling opens the door to future import/export features (e.g., xpull, selective clone, tagging-based batch export)

Your memory system is no longer limited to a single directory.
It now travels.

v1.2.2 — Message Insertion ⭐

08 Dec 02:02

Choose a tag to compare

Release v1.2.2 — Message Insertion

This release introduces one of the biggest upgrades to the FUR message system to date:
true message insertion, allowing users to insert new messages before or after any existing message in a conversation — with full support for both jot and chat input styles.


🚀 New Features

1. fur msg <id> --pre / --post

You can now insert a message relative to an existing message ID or prefix.

Examples:

fur msg 6e32 --pre jot me "insert before"
fur msg 6e32 --post jot "insert after"

Works with:

  • text jot
  • markdown jot
  • avatar-scoped jot
  • chat mode (multiline input)

2. Long-form passthrough (jot + chat passthrough)

The CLI now accepts a trailing vararg passthrough after the target:

fur msg 6e32 --pre jot me "I am inserted"

Or chat mode:

fur msg 6e32 --post chat andrew

This allows the msg command to seamlessly reuse the core jot/chat machinery with zero duplication.

3. Stable Conversation Reindexing

Inserted messages are now:

  • appended naturally through jot/chat
  • removed from the default end
  • re-inserted at the exact pre/post position
  • saved back to the conversation file cleanly

This ensures stable ordering and consistent history.


🧪 Examples

Insert text before:

fur msg f8ff --pre jot "hello before"

Insert text after:

fur msg f8ff --post jot "hello after"

Insert chat block:

fur msg f8ff --post chat

Insert with avatar:

fur msg f8ff --pre jot andrew "avatar-scoped insert"

🏁 Summary

This release turns fur msg into a fully-powered editing tool:

  • Insert messages anywhere
  • Use jot or chat as data sources
  • Preserve conversation order
  • Avoid all CLI positional conflicts

This pushes FUR closer to a true structured conversation editing system — durable, local-first, and extremely flexible.

v1.2.1 — Clone Stability Patch 🩹

06 Dec 04:35

Choose a tag to compare

🩹 v1.2.1 — Clone Stability Patch

Fix: Markdown overwrite during cloning

This patch fixes a bug where cloned messages created within the same second shared identical timestamp-based markdown filenames, causing silent overwrites.

✅ What’s new

  • Markdown files now use clone suffixes (-c, -cc, -ccc, …) to guarantee uniqueness.
  • Works for clones-of-clones with unlimited depth.
  • Backward-compatible with existing threads and markdowns.

🔧 Technical

  • Updated clone_markdown_if_any to generate deterministic suffix-based filenames.
  • Added split_clone_suffix helper.
  • No behavioral changes to conversations or IDs.

v1.2.0 — The Clone Wars 🛰️

05 Dec 18:39

Choose a tag to compare

VERSION I.II — THE CLONE WARS 🌌

A FUR v1.2.0 Chronicle (cosmic vibes, legally distinct)

In a distant corner of the developer galaxy, unrest has grown within the archives of FUR.
Ancient commands have sown confusion. Conversations splinter. Attachments whisper warnings into the void.

But hope rises.

A new power emerges — a safe, disciplined art known only as Deep Clone.
Its purpose: to restore balance to branching, prevent catastrophic overwrites, and end the age of accidental file entanglement.

Meanwhile, an old menace stirs…
The dreaded Evil Fork Command, long feared for its deceptive behavior, threatens the stability of all who invoke it.

Now, as shadows fall across the chat trees, a final verdict awaits.
The Clone Wars begin.
The Fork Entanglement ends.
And FUR prepares to ascend into a new age of versioned enlightenment.


🛰️ v1.2.0 — The Clone Wars

This release introduces one of the most powerful features FUR has ever seen — and banishes one of its most dangerous relics.


Deep Clone (safe duplication of entire conversations)

You can now create a full duplicate of any conversation — messages, tree structure, parents, children, branches, and all markdown attachments — safely and cleanly, without risking ID collisions or overwrites.

🔁 Deep cloning includes:

  • Every message receives a new UUID
  • All parent/child/branch links are remapped
  • Markdown attachments are copied and timestamp-renamed into chats/
  • No collisions, no overwrites, no entangled references

🛡️ Always safe

  • Never modifies or touches existing chats
  • All attachments gain new unique names (CHAT-YYYYMMDD-HHMMSS.md)
  • Cloned conversations appear immediately in fur convo
  • The newly-created clone becomes the active conversation

🎬 The Fall of the Evil Fork Command

A fully accurate, fully dramatic account

The ancient fork command once roamed the depths of the FUR codebase, claiming to “duplicate” conversations.
But this claim was false — a shimmering mirage in the terminal.

Instead of creating clones, fork generated new archives that merely referenced the original documents.
They weren’t copies.
They were ghost pointers.

And with that came catastrophe:

  • Deleting a fork also deleted the real underlying documents,
    since both pointed to the same files.

  • Forks were dangerously entangled with originals

  • Branching behavior was unclear and unpredictable

  • Users accidentally vaporized legitimate chats because the fork behaved like an emotional parasite

This wasn’t “unexpected behavior.”
This was a deletion trap wearing sunglasses and pretending to be a backup tool.

So justice was served.

🔥 fork has been removed completely.

Not deprecated.
Not renamed.
Not hidden behind a warning flag.

Eliminated.
Purged.
Yeeted into oblivion.

In its place rises Deep Clone, the true and safe evolution:

  • Independent message trees
  • Independent attachments
  • No shared references
  • No accidental cross-deletions
  • No hidden entanglement

Let the logs show:
The Clone Wars begin precisely where the Fork Entanglement ends.


🧪 Tested & Verified

  • Multi-generation clones behave consistently
  • Markdown attachments duplicate safely
  • Deleting messages inside clones does not affect originals
  • Full tree structures remain intact
  • fork deletion no longer threatens real documents (because fork no longer exists)

The galaxy is calmer now.


🛠️ Minor Enhancements

  • Improved internal architecture for future editing tools
  • Cleaner code organization
  • Updated README
  • Polished console output

🏁 Closing Note

With The Clone Wars, FUR evolves from a journaling tool into a versioning engine for your mind.

If you use AI to think, explore, and create, Deep Clone lets you branch ideas safely — without the lurking danger of reference-linked file destruction.

Go forth and duplicate responsibly, my brilliant little chaos biscuit.

v1.1.0 — The Howling Purge of Fallen Conversations 🔥🩸

05 Dec 00:01

Choose a tag to compare

🩸🔥 Release v1.1.0 — The Howling Purge of Fallen Conversations 🔥🩸

The update that drags your old threads screaming into the void.

This version of FUR rises from the abyss with a reforged deletion ritual.
Conversations aren’t merely “deleted” anymore — they are hunted, cornered, and consumed whole. JSON files crack like bone. Markdown scrolls burn to ash. No trace remains but the faint echo of your poor decisions.

A new two-stage confirmation ritual now stands between you and catastrophic self-inflicted data doom. Yes, even demons know you’re clumsy.


What’s New in the Realm of Fire

🔥 1. The Destructive Deletion Rite (fur convo --delete)

Your command now summons a full infernal tribunal:

  1. Primary Omen

    Are you sure you want to delete this conversation? (y/N)
    
  2. Scarlet Warning Sigil
    A fiery reminder that this act is irreversible unless you’ve bound your work in Git.

  3. The Final Blood-Oath

    Type DELETE to confirm:
    

    Only uppercase appeases the void.
    Lowercase is for mortals who still have hope.


🔄 2. Total Recursive Consumption

When the purge begins, the beast devours:

  • the conversation JSON
  • all message JSON offspring
  • attached Markdown runes
  • any lurking orphans that thought they were safe

It is thorough.
It is merciless.
It is beautifully quiet afterward.


🚀 Invoking the New Ritual

fur convo  <id> --delete

A typical sacrifice:

Are you sure you want to delete this conversation? (y/N)
> y

⚠️  Mortal, this action is destructive.
    Once consumed, the thread cannot return unless preserved by Git.

Type DELETE to confirm:
> DELETE

The ground splits. A thread is swallowed.


🎉 A Grudging Acknowledgment

Thanks for using FUR, you delightful little goblin.
This update sharpens the claws of your archive and teaches your CLI to howl at the moon with a bit more dignity.

v1.0.0 — Stable Release: The FUR Conversation Archiving System

03 Dec 23:42

Choose a tag to compare

v1.0.0 — Stable Release: The FUR Conversation Archiving System

This release marks the first stable version of FUR — the AI conversation archiving system designed for researchers, developers, and writers who rely on AI as part of their workflow.
v1.0.0 delivers a mature, reliable foundation with full-project search, tagging, editing, and complete metadata consistency across all files.


1. New: Full-Project Search (fur search)

FUR now provides a fast, structured search engine that scans every conversation and every message across the entire .fur project:

Capabilities

  • Searches message "text" fields
  • Searches contents of attached Markdown files
  • Accepts flexible multi-query syntax

Examples

fur search "deep learning"
fur search "universal approximator"
fur search "deep, learning"
fur search "metadata, forecasting, neural"

Each match returns:

  • conversation ID
  • message ID
  • avatar
  • source (text / markdown)
  • contextual snippet

JSON output mode (--json) is available for programmatic use.

This is the first step toward FUR’s long-term goal: full, durable retrieval of your AI knowledge base.


2. New: Conversation-Level Tagging System

FUR conversations can now hold arbitrary metadata tags:

fur convo --tag research
fur convo --tag "neural forecasting"
fur convo --tag "deep learning"
fur convo --clear-tags

Features:

  • Multi-tag input with comma separation
  • Spaces are normalized ("deep learning"deep-learning)
  • Prefix-based conversation selection
  • Tags shown in fur convo table view

Tags allow organizing large diaries with thematic metadata.


3. New: Message Editing & Deletion

FUR now supports clean, reversible modification of message history:

Edit

fur msg 5c "new text"
fur msg --edit --avatar gpt

Delete

fur msg --rem
fur msg 8f --rem

Deletion correctly handles:

  • child messages
  • parent links
  • branches
  • conversation cleanup

Navigation and structure remain intact.


4. New: Conversation Renaming

Conversations can now be renamed directly from the CLI:

fur convo --rename "New Title"
fur convo ab --rename "Experiment Log"

Prefix matching is supported.
Titles update instantly in fur convo.


5. Stabilized Schema v0.2 (Officialized for v1.0)

No schema-breaking changes were introduced.
All .fur files now consistently follow the v0.2 schema, including:

  • uniform JSON metadata for threads and messages
  • consistent schema_version fields
  • standardized timestamp formatting
  • stable Markdown attachment fields
  • unified index structure

v1.0.0 officially declares schema v0.2 as stable and long-term safe.


6. Core CLI Improvements

  • Stronger conversation listing with tags, sizes, timestamps
  • Total memory footprint calculation for each thread
  • Cleaner error handling across conversation navigation
  • Unified tag parsing and normalization
  • More consistent help text across all commands

7. Testing Infrastructure

  • New test suite for fur search
  • Verified Markdown search behavior
  • Verified cross-conversation scanning
  • Stable temporary .fur test environments using tempfile
  • All tests passing under stable Rust

8. Summary

v1.0.0 makes FUR:

  • searchable across your entire archive
  • editable
  • taggable
  • structurally consistent
  • stable for long-term use

It represents the transition from a fast-moving prototype to a reliable personal knowledge system.

v0.4.4 — The Claw of Revision 🐾✏️🩶

03 Dec 00:39

Choose a tag to compare

v0.4.4 — The Claw of Revision 🐾✏️🩶

The fox has learned a new trick: it can rewrite its own tracks.

For the first time, FUR gains true message rewriting — precise edits, clean deletions, avatar morphing, and intelligent ID guessing. The den has claws now.


🏷️ Conversation Renaming — Shifting the Names of Burrows

Threads can now shed their old names like worn pelts:

  • fur convo --rename "New Title" → rename the active conversation
  • fur convo --rn "Shorter" → shorthand, fast and sharp
  • fur convo 3b --rename "harro" → rename by prefix, with foxlike precision

Titles update instantly in fur convo — no rebuilding, no rewiring, no lost tracks.
Just a quiet reshaping of the den entrance, while all the tunnels inside remain untouched.


✏️ Edit Anything, Anywhere

Commands now behave like a fox that knows every tunnel by memory:

  • fur msg 5c "new text" → rewrite message 5c…
  • fur msg "rewrite last" → edit the most recent message, automatically
  • fur msg --edit --interactive → open your editor and carve the message fresh
  • fur msg --edit --avatar gpt → shape-shift the speaker mid-conversation

No ceremony. No friction.
Just claws scratching reality.


🗑️ Deletion With Teeth

FUR now unthreads messages safely and recursively:

  • fur msg --rem → delete the latest message (with confirmation)
  • fur msg 82 --rem → delete the message starting with 82

Children go with their parent, branches collapse cleanly, and the archive remains whole.


🧠 ID Autoguessing — The Fox That Thinks For You

If you don’t give FUR a hash?
It hunts down the correct message on its own:

  • No ID + text → edit last
  • No ID + --remdelete last
  • No ambiguity — if the prefix matches only one message, FUR pounces.

It anticipates intent like a creature that knows your scent.


🐾 Why v0.4.4 Matters

This release gives FUR what every living archive eventually needs:

revision. correction. erasure. metamorphosis.

Conversations can now change, gracefully and intentionally.
Your tree is no longer static — it is alive, editable, shapeable.

The fox can rewrite its past without losing its soul.

v0.4.3 — The Archive That Remembers 📜🜂📜

20 Nov 21:00

Choose a tag to compare

v0.4.3 — The Archive That Remembers 📜🜂📜

🧩 New — Conversation Memory Footprint

FUR now shows the true storage weight of each thread:
conversation metadata + message JSONs + linked Markdown files.
Months of selective AI conversations compressed to a few kilobytes.


🧮 New — Total Archive Size

fur convo now ends with a final verdict:
Total Memory Used: X KB / MB
A clean snapshot of the entire .fur/ archive in one glance.


📎 Attachment Tracking (Real Fix)

Messages that point to Markdown files via markdown: are now fully counted in the footprint.
Every linked file, every attached document — all measured.

No ghosts. No missing files. The ledger is whole.


🔧 Git Passthrough Stabilized

Fixed issues where passthrough commands (add, commit, push, pull) occasionally misread the working directory or ignored nested .fur roots.
The passthrough layer is now predictable, quiet, and obedient.


📏 Human-Friendly Units

Automatic scaling:

  • under 1 MB → KB
  • 1 MB and above → MB

Readable, scannable, human.


🌑 Why v0.4.3 Matters

This release gives FUR weight and presence.
Your archive is no longer abstract — it has mass, density, continuity.
A full record of refined thinking and selective AI conversations…
stored in the space of a single image on your phone.