commits
cmd_install_service() now emits Environment=PATH=... in the generated
systemd unit, with the venv bin dir prepended and duplicates removed.
This ensures the service can find solstone-tmux and sol regardless of
the systemd user environment.
Files changed:
- src/solstone_tmux/cli.py — add import os, build service_path, emit Environment=PATH=
- contrib/solstone-tmux.service — add comment noting PATH is injected at install time
- tests/test_cli.py — new test file covering PATH injection, dedup, fallback, empty components
New ☼ indicator in tmux status-left shows observer/sync state: yellow when sync is connected, grey when offline. Controlled by `status_indicator` config field (default true). Restores original status-left on clean shutdown.
Default 7 days. Values: positive int = days to keep, 0 = delete
immediately after confirmed sync, -1 = keep forever. Cleanup runs
at the end of each sync pass with triple-gated safety: synced_days
membership, age check, and per-segment server confirmation.
Makefile provides install (uv + editable), test, format, ci, clean
targets following the pattern from sibling projects. AGENTS.md covers
project overview, source layout, build commands, dev principles, and
file header requirements. CLAUDE.md symlinks to AGENTS.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
API endpoints, CLI references, and stream_name parameter updated.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Instructions written for a coding agent working with a human.
Includes idempotency check, sol root/observers clone path,
and stream naming convention as a collaborative decision point.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Matches solstone-linux's CHUNK_DURATION. Cuts status POST traffic to
convey by 80%.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The previous LICENSE contained only the short FSF boilerplate with
"either version 3 of the License, or (at your option) any later version"
— AGPL-3.0-or-later language that contradicted AGPL-3.0-only declared
in README, pyproject.toml, and SPDX headers in every source file.
Replace with the complete canonical AGPL-3.0 license text from the FSF.
The SPDX-License-Identifier headers in source files remain the
authoritative "only" declaration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When sol is installed on the same machine, use `sol remote --json create`
for registration instead of requiring the server to be running. Falls back
to HTTP registration if sol is not found or CLI fails.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Packages aren't published to PyPI yet. Document clone + pipx install
from local source as the actual install method.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The proper setup path is sol remote create → write config → install
service, not just the interactive wizard. Document the full flow with
the config file format and verification steps.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extracted from solstone monorepo as part of observer decoupling phase 5a.
Standalone Python package that captures tmux terminal sessions to a local
cache directory and syncs them to a solstone server.
Key components:
- capture.py: tmux session capture with deduplication (from observe/tmux/capture.py)
- observer.py: main capture loop writing to local cache (from observe/tmux/observer.py)
- sync.py: background sync service modeled on solstone-macos SyncService.swift
- upload.py: HTTP upload client (from observe/remote_client.py)
- recovery.py: crash recovery for orphaned .incomplete segments
- config.py: config persistence at ~/.local/share/solstone-tmux/
- streams.py: stream naming (from think/streams.py)
- cli.py: subcommands — run, setup, install-service, status
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
cmd_install_service() now emits Environment=PATH=... in the generated
systemd unit, with the venv bin dir prepended and duplicates removed.
This ensures the service can find solstone-tmux and sol regardless of
the systemd user environment.
Files changed:
- src/solstone_tmux/cli.py — add import os, build service_path, emit Environment=PATH=
- contrib/solstone-tmux.service — add comment noting PATH is injected at install time
- tests/test_cli.py — new test file covering PATH injection, dedup, fallback, empty components
Makefile provides install (uv + editable), test, format, ci, clean
targets following the pattern from sibling projects. AGENTS.md covers
project overview, source layout, build commands, dev principles, and
file header requirements. CLAUDE.md symlinks to AGENTS.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The previous LICENSE contained only the short FSF boilerplate with
"either version 3 of the License, or (at your option) any later version"
— AGPL-3.0-or-later language that contradicted AGPL-3.0-only declared
in README, pyproject.toml, and SPDX headers in every source file.
Replace with the complete canonical AGPL-3.0 license text from the FSF.
The SPDX-License-Identifier headers in source files remain the
authoritative "only" declaration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extracted from solstone monorepo as part of observer decoupling phase 5a.
Standalone Python package that captures tmux terminal sessions to a local
cache directory and syncs them to a solstone server.
Key components:
- capture.py: tmux session capture with deduplication (from observe/tmux/capture.py)
- observer.py: main capture loop writing to local cache (from observe/tmux/observer.py)
- sync.py: background sync service modeled on solstone-macos SyncService.swift
- upload.py: HTTP upload client (from observe/remote_client.py)
- recovery.py: crash recovery for orphaned .incomplete segments
- config.py: config persistence at ~/.local/share/solstone-tmux/
- streams.py: stream naming (from think/streams.py)
- cli.py: subcommands — run, setup, install-service, status
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>