Implement full E2E, integration, component, and unit tests, and resolve all leftover tmux-to-herdr issues in UI and core scripts

This commit is contained in:
2026-07-19 20:05:48 +09:00
parent 30e606b0fa
commit ff7a2873f9
29 changed files with 3099 additions and 95 deletions
@@ -168,7 +168,7 @@ class _Header extends StatelessWidget {
runSpacing: 8,
children: [
_Pill(text: s.status.toUpperCase()),
_Pill(text: s.tmuxAlive ? 'TMUX ALIVE' : 'TMUX DEAD'),
_Pill(text: s.herdrAlive ? 'HERDR ALIVE' : 'HERDR DEAD'),
if (s.role != null) _Pill(text: s.role!.toUpperCase()),
_Pill(text: 'SERVER: ${s.server}'),
],
@@ -47,7 +47,7 @@ class SessionTable extends StatelessWidget {
DataColumn2(label: Text('NAME'), size: ColumnSize.L),
DataColumn2(label: Text('SERVER'), size: ColumnSize.S),
DataColumn2(label: Text('YAML'), size: ColumnSize.S),
DataColumn2(label: Text('TMUX'), size: ColumnSize.S),
DataColumn2(label: Text('HERDR'), size: ColumnSize.S),
DataColumn2(label: Text('CMD'), size: ColumnSize.S),
DataColumn2(label: Text('RESUME'), size: ColumnSize.S),
DataColumn2(label: Text('JOB_ID'), size: ColumnSize.S),
@@ -79,7 +79,7 @@ class SessionTable extends StatelessWidget {
),
),
DataCell(_StatusChip(status: s.status)),
DataCell(_TmuxChip(alive: s.tmuxAlive)),
DataCell(_HerdrChip(alive: s.herdrAlive)),
DataCell(
Text(
s.pane.cmd ?? '?',
@@ -150,9 +150,9 @@ class _StatusChip extends StatelessWidget {
}
}
class _TmuxChip extends StatelessWidget {
class _HerdrChip extends StatelessWidget {
final bool alive;
const _TmuxChip({required this.alive});
const _HerdrChip({required this.alive});
@override
Widget build(BuildContext context) {
@@ -40,8 +40,8 @@ class _TerminalPaneState extends State<TerminalPane> {
Future<void> _startPty() async {
try {
final pty = await PtySession.start(
'tmux',
['-L', widget.serverName, 'attach', '-t', widget.sessionName],
'herdr',
['-L', widget.serverName, 'session', 'attach', widget.sessionName],
);
if (!mounted) {
pty.close();
@@ -15,7 +15,7 @@ void main() {
name: 'demo-session',
server: 'default',
status: 'running',
tmuxAlive: true,
herdrAlive: true,
pane: const Pane(
pid: 123,
cwd: '/x',
@@ -26,7 +26,7 @@ void main() {
resumeState: 'yes',
jobId: '-',
jobStatus: '-',
attachCommand: 'tmux attach -t demo-session',
attachCommand: 'herdr session attach demo-session',
driftClasses: const ['B'],
),
];