youros

FeaturesUsing it

Files

Your files stay where they are, in the formats your tools read, and sync between your devices with history and merging, without converting a single file. Leave your.os and the folder is just a folder.

What's kept↑ Why · Jo's notes and code are on every device, and still files Jo chooses which folders follow her, sees at a glance which are on every device, and a laptop full of builds doesn't fill the phone.

Nothing is kept until you say so. A machine's files are reachable from your devices as they are, live, while it's online; a folder you keep follows you to every device that holds it.

Opening a file is live, kept or not

Everyone with a file open edits it together, through the machine it is on, and it is saved there; collaborating needs no step first.

Shown when two browsers open one file on a machine; each sees the other's typing within 200 ms, and the file on disk ends with both edits.

0 of 2 tests passed · 3 places in the code

  • not run a test e2e/node/pair.spec.mjs:231
  • not run a test e2e/node/pair.spec.mjs:344
  • code editor/file.ts:13
  • code services/files/src/rooms.rs:6
  • code web/app/edit.js:16

Keeping a folder is one choice, made on the folder

A mark beside the folder in the files pane; from then on its files sync to the devices that hold it.

Shown when a folder kept on one machine appears on a second, at the place the second chose, byte for byte.

Not built: nothing in the code or tests names this yet.

Every file shows whether it's kept, and where

Kept and held here, kept but held elsewhere, on this machine only, or left out; and how many devices hold it.

Shown when each of the four states renders its own mark, read from the account's list of kept folders and this device's holdings.

Not built: nothing in the code or tests names this yet.

What you leave out never leaves the machine

A kept folder honours its .gitignore and leaves out .git; leaving out a subfolder or a file from the pane writes the rule to the folder's own ignore file, which travels with it.

Shown when a kept repo's node_modules, target and .git, and a file left out from the pane, never reach the relay or another device.

Not built: nothing in the code or tests names this yet.

Un-keeping deletes nothing

The folder stops syncing; every device that held it keeps its copy as an ordinary folder.

Shown when after un-keeping, each holder's files are byte for byte what they were, and an edit on one no longer reaches another.

Not built: nothing in the code or tests names this yet.

Your kept files, whichever device holds them

The files pane shows two places: one machine's files as they are on it, and your kept folders, openable while any device holding them is online.

Shown when a kept folder held only by a machine that isn't the one browsed opens from the kept view, and edits save on its holder.

Not built: nothing in the code or tests names this yet.

Each device holds what it chooses: all, some, or nothing

A phone can hold only notes, a laptop everything, a borrowed browser nothing. A device holding nothing still opens kept files from a holder, and keeps no copy once they're closed.

Shown when a browser set to hold nothing has no file content in its storage after closing a kept file; one set to a subset holds exactly that subset.

Not built: nothing in the code or tests names this yet.

A kept folder lives where each machine puts it

~/Documents/notes on one machine and ~/notes on another are one kept folder; choosing where is part of holding it.

Shown when a folder held at two different paths syncs both ways.

Not built: nothing in the code or tests names this yet.

A folder only one device holds says it isn't backed up

Until a second device holds it, losing that device loses the folder, and the pane says so beside it.

Shown when a kept folder with one holder shows the warning; adding a holder clears it.

Not built: nothing in the code or tests names this yet.

Finding your way↑ Why · Jo's notes and code are on every device, and still files Jo stars the folders she works in and gets back to them in one tap, from any of her browsers.

A starred file or folder is one tap away, on every browser of yours

A star on any file or folder puts it in a Starred list at the top of the files pane, its name above its machine and folder; a folder opens there, a file opens. Where you are reads as crumbs back to the machine, each one a way up, and the folder you're in carries its own star. A star on a machine that's away stays listed, greyed; one on something since deleted says so and offers to unstar.

Shown when a nested folder and a file starred in one browser are in Starred after a reload and in a second browser of the account; the folder's star lands in it under the right crumbs and a crumb goes up; unstarring in the second browser is seen in the first; a starred folder deleted on the machine shows as gone and unstars.

0 of 2 tests passed · 1 place in the code

  • not run a browser adds a Linux machine with the line it shows, uses its files, edits one in the editor, and a second browser joins from a link e2e/node/pair.spec.mjs:14
  • not run a test services/files/tests/stars.rs:1
  • code web/app/app.tsx:693

A folder and its doc↑ Why · Jo's notes and code are on every device, and still files Jo's notes are plain files in folders, edited with any tool, the same on every device.

Syncing tools today either own your files or copy whole files and leave "conflicted copy" behind. Here a change becomes the few edits that make it.

Your tools save as always, and a change becomes the smallest edit

An editor never learns your.os is there.

Shown when in-place writes, write-and-rename, vim's backup save, delete then recreate, and truncate then write each keep the file's identity, and a one-character edit crosses as a few operations of under 200 bytes.

Not built: nothing in the code or tests names this yet.

An edit on another device lands on disk byte for byte

Shown when edits made in either of two folders appear in the other, equal byte for byte, written by temporary file and rename so no tool reads half a file.

Not built: nothing in the code or tests names this yet.

Edits made apart merge

Shown when two devices edit different lines of one file while disconnected; on reconnecting, both folders hold both edits and are equal.

Not built: nothing in the code or tests names this yet.

A move keeps the file

Its history and anyone's edits to it follow it to the new name.

Shown when a file renamed on one device while edited on the other ends at the new name with the edit in it.

Not built: nothing in the code or tests names this yet.

One name made on both sides keeps both files

Shown when two devices create one path apart; both files survive, one under a name that says it's the other device's.

Not built: nothing in the code or tests names this yet.

Binary files are kept whole, the newest winning

Bytes that aren't text can't be merged, so they aren't.

Shown when a binary file changed on two devices ends as the later one on both, and its earlier content is in history.

Not built: nothing in the code or tests names this yet.

Syncing settles

Nothing loops.

Shown when two seconds after the last edit, no updates and no rescans.

Not built: nothing in the code or tests names this yet.

A restart picks up where it was

Shown when a service restarted, or two full folders meeting for the first time with the same content, produces no conflicts and no copies.

Not built: nothing in the code or tests names this yet.

Git↑ Why · Jo's notes and code are on every device, and still files Jo's code syncs like any folder, and git still works exactly as it did.↑ Why · Priya adds what only code can do, and stops being asked for words Priya commits and reviews in git as always; nothing merges code behind git's back.

A repo is a folder like any other, and git stays exactly as it is.

A version commits to a branch without touching your files

Shown when the doc at a chosen version, committed to a branch, is equal byte for byte to git show of that commit, and the working tree is unchanged. The commit records the version it came from.

Not built: nothing in the code or tests names this yet.

What git did comes back as edits, and live edits stay

A pull, a checkout or a merge, while you keep typing.

Shown when a pull changing one file, while another was edited live, ends with both; checking out an older branch and back loses nothing; absorbing a commit the doc made itself is no operations.

Not built: nothing in the code or tests names this yet.

A change from git that overlaps a live edit is held, never merged silently

Two edits to one line can merge into code that compiles and is wrong.

Shown when each same-line case in the spike is held; none of the clean ones is.

Not built: nothing in the code or tests names this yet.

Someone else's edit to code arrives as a fork with its diff

Your own edits sync live between your devices; anyone else's, an agent's included, merges only when you've seen exactly what it changes.

Shown when a fork's edits reach nothing until merged, and the diff shown before merging is exactly what the merge changes.

Not built: nothing in the code or tests names this yet.

A repo's history comes in with it

Its commits become changes, by their authors, with their dates and messages, and its merges stay merges.

Shown when a real repo's every commit imported (2,240 commits with 80 merges took 23 s, about 1.3 times its git pack), and every sampled commit's tree in the doc equals git's, before and after reloading.

Not built: nothing in the code or tests names this yet.

Any old version opens in about a second

Shown when from a doc loaded at its latest version, the state at its first commit, at half way and at nine tenths opens in under 1.5 s each.

Not built: nothing in the code or tests names this yet.

History↑ Why · Jo's notes and code are on every device, and still files Jo can go back to last Tuesday, and a phone left in a drawer for two months still syncs.

Every change for a while, then fewer checkpoints the older they get, so history doesn't grow for ever.

Every change is kept for a window, then cut exactly there

Shown when a year of edits by three devices, cut at a week ago, lands at a week ago and is under a quarter of the full doc's size.

Not built: nothing in the code or tests names this yet.

Checkpoints outside the doc, thinned

All of the last day, one a day for a month, one a week for a year.

Shown when after thinning, every kept checkpoint restores exactly.

Not built: nothing in the code or tests names this yet.

A device away longer than the window rejoins without losing edits

Shown when a device away for 60 days, against a doc cut at a week, rejoins with every one of its edits that didn't touch an edit made meanwhile.

Not built: nothing in the code or tests names this yet.