Files
DeepSeek-Reasonix/internal/storage/volume_unix.go
T
yhh b18d8ef3aa feat(studio): storage relocation, composer intake, and the checkpoint agreement
Accumulated work from the branch, carried across the rebase onto origin/studio
and merged with what landed there in the meantime.

Storage: a workspace can name where its state lives, and the server tracks the
one relocation it may be running (internal/storage, config/storage_roots,
serve/storage, the Storage panel).

Composer intake: what a drop or a long paste becomes is one pure function —
payload in, action out — so "what happens if I drop a folder" is a test rather
than a branch of an onDrop handler. It sits on the drop router that landed
upstream: that one answers which pane a drop hit, this one answers what it
means and says so before the pointer is released. A paste long enough to bury
the composer becomes a chip beside it instead.

Session: the checkpoint agreement and the lineage/torn-log recovery cases,
plus the conflict diagnostic learning where two transcripts parted and which
roles stood there — a position and a role tell a local reshape from a foreign
write without recording any content.

Model refs: the default-model write checks the live catalog, so an extension
model the runtime knows can be persisted as the default.
2026-08-19 23:52:04 -07:00

20 lines
506 B
Go

//go:build !windows
package storage
import "golang.org/x/sys/unix"
// readVolume asks the filesystem holding dir for its free and total bytes.
// Bavail, not Bfree: the reserved blocks a filesystem keeps for root are not
// space a move can use.
func readVolume(dir string) Volume {
vol := Volume{Path: dir}
var st unix.Statfs_t
if err := unix.Statfs(dir, &st); err != nil {
return vol
}
vol.Free = int64(st.Bavail) * int64(st.Bsize)
vol.Total = int64(st.Blocks) * int64(st.Bsize)
return vol
}