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,2 @@
1
+ __pycache__/
2
+ *.pyc
@@ -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"]
@@ -0,0 +1,3 @@
1
+ """sessionview - the name is reserved on PyPI; the tool follows."""
2
+
3
+ __version__ = "0.0.1"