aboutsummaryrefslogtreecommitdiffstats
path: root/packaging/rpm/meshbay-node.spec
blob: e4f386ecd66cef99bee739dcf6cf778fab4e02b3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Name:           meshbay-node
Version:        0.6.0
Release:        1%{?dist}
Summary:        MeshBay Node — local file host, streaming server, and group daemon
License:        AGPLv3+
URL:            https://meshbay.org
Source0:        %{name}-%{version}.tar.gz

BuildArch:      noarch
BuildRequires:  python3-devel >= 3.12
BuildRequires:  python3-pip
BuildRequires:  python3-hatchling

Requires:       python3 >= 3.12
Requires:       python3-meshbay-common = %{version}
Requires:       python3-fastapi
Requires:       python3-uvicorn
Requires:       python3-httpx
Requires:       python3-watchdog
Requires:       python3-aioquic >= 1.0
Requires:       python3-aioice
Requires:       python3-pyjwt
Requires:       python3-blake3
Requires:       python3-msgpack
Requires:       python3-zstandard
# Optional: ffmpeg for HLS streaming
Recommends:     ffmpeg

%description
MeshBay Node indexes local directories and serves encrypted files
to authenticated group members over QUIC (MNP v2) or TCP+TLS (MNP v1).
Includes a local web UI at http://localhost:18000.

%prep
%autosetup

%build
%{python3} -m pip wheel --no-deps --wheel-dir dist .

%install
%{python3} -m pip install --root %{buildroot} --no-index --find-links dist meshbay-node

# Two units, because there are two personas and one file cannot be both.
#
# The SYSTEM template carries User=%%i and is instantiated per person by root
# (`systemctl enable --now meshbay-node@alice`) — the server case. A *user* unit
# cannot carry User= at all: it already runs as its owner, and systemd refuses
# the file. This spec used to install the template into the user unit directory,
# where it could never have started.
install -Dm644 packaging/systemd/meshbay-node.service \
    %{buildroot}%{_unitdir}/meshbay-node@.service
install -Dm644 packaging/systemd/meshbay-node-user.service \
    %{buildroot}%{_userunitdir}/meshbay-node.service

%files
%license LICENSE
%doc README.md
%{python3_sitelib}/meshbay_node/
%{python3_sitelib}/meshbay_node-*.dist-info/
%{_bindir}/meshbay-node
%{_unitdir}/meshbay-node@.service
%{_userunitdir}/meshbay-node.service

%changelog
* Sun Aug 23 2026 MeshBay Team <team@meshbay.org> - 0.6.0-1
- Per-group application enablement: roster setting, signed apps_enabled op,
  enforced by the same admin-authority check as member_upload

* Sun Aug 16 2026 MeshBay Team <team@meshbay.org> - 0.5.0-1
- Abandoned video streams release their transcode slot at once
- Background tasks are held, so none is collected mid-flight losing a slot
- ffmpeg is reaped without deadlocking on its own unread output
- Chunk replies wait for room on the channel instead of queueing 8 MB
- Chat history pages backwards; upload names accept any script, and errors name the file

* Sun Aug 16 2026 MeshBay Team <team@meshbay.org> - 0.4.0-1
- No functional change; released in step with the other packages

* Sat Aug 15 2026 MeshBay Team <team@meshbay.org> - 0.3.0-1
- Video streaming is paced by the client; stream_stop frees the transcode slot
- Operator can remove an empty directory and revoke a member over MNP
- meshbay-node group add: host another of your hub groups
- admin_pk_ed25519 removed; the roster is the only source of node authority

* Fri Aug 14 2026 MeshBay Team <team@meshbay.org> - 0.2.0-1
- Node wraps the group key itself; members are admitted from a local roster
- Identity keys are per node, created at first contact and pinned there
- Operator surface over SSH: operator pair, member list|invite|revoke|unpin
- Unauthenticated HTTP file API and TCP transport removed (C1, C6)

* Sat Aug 09 2026 MeshBay Team <team@meshbay.org> - 0.1.0-1
- Initial package