Skip to content

Releases: Valinwolf/sush

v3.1.1-alpha

Choose a tag to compare

@Valinwolf Valinwolf released this 08 Nov 05:57
b66db5d

Improvement
• Simplified and consolidated privilege-handling logic:
The Globals class now delegates all privileged filesystem operations (mkdirs, move, perms) to the unified, silent SwitchUser.do() method. This removes duplicated subprocess handling and ensures consistent, non-intrusive execution under elevated permissions.
The result is cleaner code, quieter output, and a fully stable curses interface during update operations.

Summary of Changes
Privilege escalation logic has been streamlined to rely on a single silent execution path, eliminating redundant code and preventing permission-related messages from breaking the terminal layout.

v3.1-alpha

Choose a tag to compare

@Valinwolf Valinwolf released this 08 Nov 03:20
a6a91fd

Improvement
• Cancel and return-to-menu behavior:
Pressing Esc or Ctrl-C in the authentication dialog now cancels the password entry, exits with code 130, and returns the user directly to the main menu instead of showing an unauthorized warning. The implementation ensures the terminal is properly restored and no password data is written or transmitted.

Summary of Changes
This update enhances user control and safety during authentication by allowing clean cancellation and graceful return to the main interface without triggering security alerts or leaving terminal artifacts.

v3.0-alpha

Choose a tag to compare

@Valinwolf Valinwolf released this 08 Nov 01:34
3296d42

Full internal refactor

Summary
• Major codebase overhaul to a class-based architecture while preserving the existing UI and user workflows.

Key Changes
• Introduced cohesive modules: Globals, ConfigManager, CursesUI, SwitchUser, SessionManager, and Updater.
• All terminal UI and input handling centralized in CursesUI, including progress dialogs and session manager screens.
• Privileged execution unified through SwitchUser with secure, non-interactive sudo via askpass.
• Filesystem helpers (mkdirs, move, perms) live in Globals and escalate via SwitchUser when needed.
• Updater runs entirely inside the curses UI with a progress bar, live status ticker, and prompts when necessary.
• Environment for privileged commands is established once (askpass + TTY) and inherited by all child processes.
• Session management logic (tmux listing/creation/attach/kill) isolated in SessionManager; UI switching handled by CursesUI suspend/resume.

Operational Improvements
• More reliable and consistent sudo behavior across all features.
• Atomic config writes with correct ownership and permissions.
• Streamlined internal structure reduces duplication and makes future maintenance easier.

Migration Notes
• External integrations should target the stable entry points: CursesUI.main() for the UI loop, Updater.check_updates() for updates, and SessionManager for session operations.
• No changes to end-user UI or key bindings.

v2.3.1-alpha

Choose a tag to compare

@Valinwolf Valinwolf released this 07 Nov 22:16
d588b66

Improvements:
• Updater now downloads the upstream env as env.default, appends any new upstream options to the local env, and prompts the user before removing options that no longer exist upstream.
• Added new configuration option COMPANY (default: “PRIVATE COMPANY SERVER”), which controls the header title displayed in the interface.

Summary:
This release refines configuration management during updates and introduces the configurable company name, improving clarity, customization, and maintainability for administrators.

v2.2.1-alpha

Choose a tag to compare

@Valinwolf Valinwolf released this 07 Nov 21:19
47568d2

Fixes:
• Updater now suspends curses (curses.endwin()) before running downloads, pip installs, or sudo file operations, and restores the UI afterward. This prevents invisible output and redraw glitches during updates.

Improvements:
• Clear terminal progress is printed while updates run outside curses.
• Post-update prompt offers to restart sush for a clean relaunch.
• Internal version string bumped to 2.2.1-alpha.

Notes:
• Behavior and features from 2.2-alpha are unchanged aside from the update flow fix and minor UX polish.

v2.3-alpha

Choose a tag to compare

@Valinwolf Valinwolf released this 07 Nov 21:33
5557527

New Features:
• Added configurable shell names.
• PRIMARY_NAME allows renaming “Primary Shell”.
• SECONDARY_NAME allows renaming “Secondary Shell”.
• Added DISABLE_PRIMARY option to remove “Primary Shell” from the menu.
• When Primary Shell is disabled, Secondary Shell automatically becomes “Open Shell” unless SECONDARY_NAME is set.
• Added PREVENT_ROOT_LOGIN option to block root from being used in the Login dialog.
• Attempting to log in as root now triggers the UNAUTHORIZED warning screen.

Configuration:
• Updated /usr/local/etc/sush/env to include:
PRIMARY_NAME
SECONDARY_NAME
DISABLE_PRIMARY
PREVENT_ROOT_LOGIN

Summary:
This release introduces flexible menu customization and enhanced login security controls, allowing administrators to adjust shell visibility and restrict privileged access as needed.

v2.2-alpha

Choose a tag to compare

@Valinwolf Valinwolf released this 07 Nov 20:58
86c843b

New Features:
• Automatic Update System
• Added integrated GitHub update checker that detects new tags/releases from the configured repository.
• Supports forking by allowing a custom UPDATE_URL value in /usr/local/etc/sush/env.
• Only checks once per run to minimize network usage.
• Prompts the user to update if a newer version is available.
• Granular Update Installer
• Downloads and installs only the files listed in files.txt from the remote repository—no full repo cloning required.
• Preserves file ownership and permissions for existing files.
• Creates new files using safe defaults (0644 for regular files, 0755 for executables).
• Fetches and installs Python dependencies from requirements.txt (if present) using pip.
• Retains files.txt locally at /usr/local/etc/sush/files.txt for system integrity tracking.
• All operations use sudo -A with the existing curses-based askpass system for secure, non-interactive privilege elevation.

Configuration Changes:
• Added new environment variable UPDATE_URL to /usr/local/etc/sush/env to specify the repository used for updates.
• Moved the version string to the top of the main script as VERSION = “2.2-alpha”.
• PROMPT_OVERRIDE remains configurable via the same file.

Dependency Updates:
• Added packaging (PyPI) for version parsing and comparison.

File Map (files.txt):
r /etc/sush/env
x /bin/sush
x /bin/sush-askpass

Summary:
This release introduces a fully automated, secure update mechanism with fine-grained file management and repository flexibility—laying the groundwork for stable release channels and user-maintained forks.

v2.1-alpha

Choose a tag to compare

@Valinwolf Valinwolf released this 07 Nov 20:18
c3d4bd9
  • added config file
  • added auto-detect install prefix
  • files can be installed anywhere now
    • config: $INSTALL_PREFIX/etc/sush.env
    • main script: $INSTALL_PREFIX/bin/sush
    • askpass script: $INSTALL_PREFIX/bin/sush-askpass