sessionview 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: sessionview
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: sessionview - a sidebar for tmux: your projects (sessions) and your agents (seats), here and on remote hosts. Name reserved; the tool follows.
|
|
5
|
+
Project-URL: Homepage, https://github.com/mbailey/session
|
|
6
|
+
Author: Mike Bailey
|
|
7
|
+
License-Expression: GPL-3.0-or-later
|
|
8
|
+
Classifier: Development Status :: 1 - Planning
|
|
9
|
+
Requires-Python: >=3.11
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
|
|
12
|
+
# Herd
|
|
13
|
+
|
|
14
|
+
A sidebar for tmux, in the spirit of herdr: your projects (tmux sessions)
|
|
15
|
+
and your agents (seats), here and on remote hosts, one click away, with a
|
|
16
|
+
right-click menu built from what is installed. Session's TUI — a
|
|
17
|
+
controller and view for the `session` tools, drawn beside tmux.
|
|
18
|
+
|
|
19
|
+
`sessionview` 0.0.1 on PyPI reserves the name; the tool follows (Mike, approved by mail 00:25 Thu 2026-09-10).
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
herd [SESSION] # in this terminal: sidebar left, SESSION attached
|
|
23
|
+
# right (a private outer tmux holds the two panes)
|
|
24
|
+
prefix H # the same sidebar as a popup in any tmux client
|
|
25
|
+
|
|
26
|
+
Read [SPEC.md](SPEC.md) first: what Herd is, the rules of the view, the
|
|
27
|
+
contract with `session`, the plugin manifest, config, measured limits.
|
|
28
|
+
This repo is the **reference implementation** (Mike, 18:23 Sun
|
|
29
|
+
2026-09-06: "a working reference implementation ... it can be a life
|
|
30
|
+
raft") — session integrates from the spec; this stays comparable and
|
|
31
|
+
runnable.
|
|
32
|
+
|
|
33
|
+
## Layout
|
|
34
|
+
|
|
35
|
+
bin/tmux-sidebar the view, the clicks, the menus (Python 3.11+, stdlib)
|
|
36
|
+
bin/herd the front door (the frame) + the sidebar supervisor
|
|
37
|
+
bin/herd-frame the frame: outer tmux, sidebar pane + client pane
|
|
38
|
+
bin/herd-session a project session with code / git / project / tasks tabs
|
|
39
|
+
bin/herd-newtab the tab bar's "+"
|
|
40
|
+
tmux/herd.conf the herd look, session-scoped (sourced with S= and HERD_ROOT=)
|
|
41
|
+
tmux/tabs-top.conf the same look, global (source-file it from ~/.tmux.conf)
|
|
42
|
+
config/config.json every default, explicit; ~/.sessionview/config.json is made from it
|
|
43
|
+
plugins/*/ herd-plugin.toml (+ scripts): session, voicemode, taskmaster
|
|
44
|
+
|
|
45
|
+
Paths resolve from the checkout (`HERD_ROOT`); state lives in
|
|
46
|
+
`~/.local/state/herd` (`HERD_STATE`). Needs: tmux ≥ 3.7, Python ≥ 3.11,
|
|
47
|
+
`session` on PATH; `tm` and the voicemode plugin are optional (their menu
|
|
48
|
+
items appear only when they are installed).
|
|
49
|
+
|
|
50
|
+
## Install
|
|
51
|
+
|
|
52
|
+
git clone ms2:git/repos/sessionview.git ~/Code/failmode/mbailey/sessionview
|
|
53
|
+
ln -s ~/Code/failmode/mbailey/sessionview/bin/{herd,herd-frame,tmux-sidebar,herd-session} ~/.local/bin/
|
|
54
|
+
herd
|
|
55
|
+
|
|
56
|
+
## Keys and clicks
|
|
57
|
+
|
|
58
|
+
- sidebar: click a project or seat → go there; right-click → its menu;
|
|
59
|
+
`new` → a session picker (type to filter, ↑↓, enter); the store name →
|
|
60
|
+
pick a store; `all · grouped` on the agents heading are toggles; `q`
|
|
61
|
+
reloads, `Q` quits, esc backs out of any view
|
|
62
|
+
- tab bar: click selects, drag reorders, `+` new tab; a close `×` when
|
|
63
|
+
`@herd_tab_close` is set (`HERD_TAB_CLOSE=1 herd`)
|
|
64
|
+
- menu: ↑↓ / j k move, the letter or enter picks, esc closes
|
|
65
|
+
|
|
66
|
+
Built by Pip, Fri 2026-09-04 – Sun 2026-09-06, from Mike's asks by voice,
|
|
67
|
+
with Cora reading herdr's own window for the colours.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Herd
|
|
2
|
+
|
|
3
|
+
A sidebar for tmux, in the spirit of herdr: your projects (tmux sessions)
|
|
4
|
+
and your agents (seats), here and on remote hosts, one click away, with a
|
|
5
|
+
right-click menu built from what is installed. Session's TUI — a
|
|
6
|
+
controller and view for the `session` tools, drawn beside tmux.
|
|
7
|
+
|
|
8
|
+
`sessionview` 0.0.1 on PyPI reserves the name; the tool follows (Mike, approved by mail 00:25 Thu 2026-09-10).
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
herd [SESSION] # in this terminal: sidebar left, SESSION attached
|
|
12
|
+
# right (a private outer tmux holds the two panes)
|
|
13
|
+
prefix H # the same sidebar as a popup in any tmux client
|
|
14
|
+
|
|
15
|
+
Read [SPEC.md](SPEC.md) first: what Herd is, the rules of the view, the
|
|
16
|
+
contract with `session`, the plugin manifest, config, measured limits.
|
|
17
|
+
This repo is the **reference implementation** (Mike, 18:23 Sun
|
|
18
|
+
2026-09-06: "a working reference implementation ... it can be a life
|
|
19
|
+
raft") — session integrates from the spec; this stays comparable and
|
|
20
|
+
runnable.
|
|
21
|
+
|
|
22
|
+
## Layout
|
|
23
|
+
|
|
24
|
+
bin/tmux-sidebar the view, the clicks, the menus (Python 3.11+, stdlib)
|
|
25
|
+
bin/herd the front door (the frame) + the sidebar supervisor
|
|
26
|
+
bin/herd-frame the frame: outer tmux, sidebar pane + client pane
|
|
27
|
+
bin/herd-session a project session with code / git / project / tasks tabs
|
|
28
|
+
bin/herd-newtab the tab bar's "+"
|
|
29
|
+
tmux/herd.conf the herd look, session-scoped (sourced with S= and HERD_ROOT=)
|
|
30
|
+
tmux/tabs-top.conf the same look, global (source-file it from ~/.tmux.conf)
|
|
31
|
+
config/config.json every default, explicit; ~/.sessionview/config.json is made from it
|
|
32
|
+
plugins/*/ herd-plugin.toml (+ scripts): session, voicemode, taskmaster
|
|
33
|
+
|
|
34
|
+
Paths resolve from the checkout (`HERD_ROOT`); state lives in
|
|
35
|
+
`~/.local/state/herd` (`HERD_STATE`). Needs: tmux ≥ 3.7, Python ≥ 3.11,
|
|
36
|
+
`session` on PATH; `tm` and the voicemode plugin are optional (their menu
|
|
37
|
+
items appear only when they are installed).
|
|
38
|
+
|
|
39
|
+
## Install
|
|
40
|
+
|
|
41
|
+
git clone ms2:git/repos/sessionview.git ~/Code/failmode/mbailey/sessionview
|
|
42
|
+
ln -s ~/Code/failmode/mbailey/sessionview/bin/{herd,herd-frame,tmux-sidebar,herd-session} ~/.local/bin/
|
|
43
|
+
herd
|
|
44
|
+
|
|
45
|
+
## Keys and clicks
|
|
46
|
+
|
|
47
|
+
- sidebar: click a project or seat → go there; right-click → its menu;
|
|
48
|
+
`new` → a session picker (type to filter, ↑↓, enter); the store name →
|
|
49
|
+
pick a store; `all · grouped` on the agents heading are toggles; `q`
|
|
50
|
+
reloads, `Q` quits, esc backs out of any view
|
|
51
|
+
- tab bar: click selects, drag reorders, `+` new tab; a close `×` when
|
|
52
|
+
`@herd_tab_close` is set (`HERD_TAB_CLOSE=1 herd`)
|
|
53
|
+
- menu: ↑↓ / j k move, the letter or enter picks, esc closes
|
|
54
|
+
|
|
55
|
+
Built by Pip, Fri 2026-09-04 – Sun 2026-09-06, from Mike's asks by voice,
|
|
56
|
+
with Cora reading herdr's own window for the colours.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# config - JSON everywhere, no hidden defaults
|
|
2
|
+
|
|
3
|
+
`config.json` here is the **template**: every key, every default, explicit
|
|
4
|
+
(Mike, voice 23:44 Wed 2026-09-09: "not have hidden defaults, but have them
|
|
5
|
+
explicit"; 23:48: "JSON everywhere ... people are used to it with Claude
|
|
6
|
+
Code"). `bin/herd-config` owns the cascade, later wins:
|
|
7
|
+
|
|
8
|
+
1. `config/config.json` - the template (this dir)
|
|
9
|
+
2. `~/.sessionview/config.json` - yours, **made from the template on first
|
|
10
|
+
read** (`SESSIONVIEW_CONFIG=` names another file)
|
|
11
|
+
3. `STORE/.sessionview` - a JSON file, or a dir holding `config.json`
|
|
12
|
+
4. `.sessionview` walked **up** from the project root, nearest wins
|
|
13
|
+
|
|
14
|
+
`herd-config dump --where` names the file that set each key. Keys starting
|
|
15
|
+
with `_` are notes. `config/sidebar.toml` is the old TOML, no longer read.
|
|
16
|
+
|
|
17
|
+
## Keys
|
|
18
|
+
|
|
19
|
+
Look: herdr's, copied not invented (Mike, voice 03:07 Sat 2026-09-05). Rows
|
|
20
|
+
are one line each (03:19: two lines is "wasting space"); ONE TAB in a format
|
|
21
|
+
means "right-align the rest", herdr's paired labels.
|
|
22
|
+
|
|
23
|
+
- `width` `refresh` - sidebar columns; seconds between renders.
|
|
24
|
+
- `popup_bg` - the tab-bar colour, reused for the menu box.
|
|
25
|
+
- `selected_fg` `selected_bold` - the selected row (Sun 2026-09-06: "a lot
|
|
26
|
+
brighter"). Not sampled from herdr yet.
|
|
27
|
+
- `project_format` `project_format2` `project_two_line`
|
|
28
|
+
`project_expand_selected` `project_gap` - fields: name glyph windows
|
|
29
|
+
attached repo branch branch_raw default git. Every project is one line;
|
|
30
|
+
the selected one grows `project_format2` (23:52 Wed 2026-09-09:
|
|
31
|
+
"always compact, selected one expanded"); `project_two_line` = all.
|
|
32
|
+
`git` is the bare count of uncommitted paths, plus ⇡ahead ⇣behind
|
|
33
|
+
💥conflicts, "" when clean (23:53 Wed 2026-09-09: no brackets).
|
|
34
|
+
`branch` is EMPTY on the default branch ("we won't see master, master,
|
|
35
|
+
master"). `project_gap` = blank rows between projects, 1 for a
|
|
36
|
+
touchscreen (17:56 Wed).
|
|
37
|
+
- `agent_format` `agent_format2` `agent_two_line` - fields: everything
|
|
38
|
+
`session list --json` returns plus glyph idle runtime ctx window tab at.
|
|
39
|
+
Naming recap/ctx costs a transcript read per seat.
|
|
40
|
+
- `store_format` `mid_format` `agents_heading` `group_format` `collapse`
|
|
41
|
+
- the fixed rows; `collapse` "" since 18:16 Sun 2026-09-06 ("drop it").
|
|
42
|
+
- `group_by` (none|repo|project|session) `sort` `hide` `show_spaces`.
|
|
43
|
+
- `tab_glyphs` - write @herd_glyph per tmux window for the tab bar.
|
|
44
|
+
- `remotes` `remote_heading` `remote_refresh` - ssh hosts whose sessions
|
|
45
|
+
and seats show under their own divider (18:00 Wed 2026-09-09).
|
|
46
|
+
- `picker_order` (recent|alpha) - the new-session picker; tab flips it.
|
|
47
|
+
- `code_nvim` - herd-session starts nvim in the code window, listening on
|
|
48
|
+
show-me's socket; off = a shell (17:30 + 18:09 Wed 2026-09-09).
|
|
49
|
+
- `agent_command` - what "Start an agent" runs: an argv list, `{project}`
|
|
50
|
+
`{agent}` `{dir}` `{socket}` filled in. Default: bare `session start`
|
|
51
|
+
(23:55 Wed 2026-09-09); set `["tm", "kick", "{project}"]` when kick is
|
|
52
|
+
ready.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "sessionview"
|
|
7
|
+
version = "0.0.1"
|
|
8
|
+
description = "sessionview - a sidebar for tmux: your projects (sessions) and your agents (seats), here and on remote hosts. Name reserved; the tool follows."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
authors = [{ name = "Mike Bailey" }]
|
|
12
|
+
license = "GPL-3.0-or-later"
|
|
13
|
+
classifiers = ["Development Status :: 1 - Planning"]
|
|
14
|
+
dependencies = []
|
|
15
|
+
|
|
16
|
+
[project.urls]
|
|
17
|
+
Homepage = "https://github.com/mbailey/session"
|
|
18
|
+
|
|
19
|
+
# 0.0.1 reserves the name on PyPI (Mike, approved by mail 00:25 Thu
|
|
20
|
+
# 2026-09-10, SV-14). The tool is bin/herd and its siblings, not yet a
|
|
21
|
+
# Python package; this metadata-only release is the same shape as
|
|
22
|
+
# sessionmail 0.0.1 (01:33 Wed 2026-09-09).
|
|
23
|
+
[tool.hatch.build.targets.wheel]
|
|
24
|
+
packages = ["src/sessionview"]
|
|
25
|
+
|
|
26
|
+
[tool.hatch.build.targets.sdist]
|
|
27
|
+
include = ["src/sessionview", "README.md", "pyproject.toml"]
|