Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.
feat(scripts): add config port command to 3m-ui management scripts
Users changing the panel port from the web UI had to SSH in and run
'systemctl restart 3m-ui' manually — easy to forget and not discoverable.
Now both the 3m-ui entry script and 3m-ui.sh manager support:
3m-ui config show — display config.yaml
3m-ui config port <1-65535> — change port + auto-restart
The interactive menu (running '3m-ui' with no args) also gains:
9. 修改面板端口 (interactive port change with current/new display)
a. 卸载 3m-ui (moved from slot 9 to 'a')
Flow:
1. Reads current port from config.yaml
2. Validates new port (1-65535, numeric)
3. sed replaces ' port: N' line in config.yaml
4. Restarts the service
5. Waits 1s, checks if active
6. Prints new access URL or failure message
This closes the UX gap: web UI saves port → user runs '3m-ui config
port 9000' → script restarts and confirms.