- New Features
- StaSh now runs on your PC using the
tkinter
module. - more settings in
easy_config
, e.g. toggle styles - colored error messages
- history is now per command
pip
now supports extraspip
will now show error messages for known incompatible packageswget
will now show an progress bar- support for unicode symbols im prompt
- various bugfixes and minor improvements
- StaSh now runs on your PC using the
- New Features
- Python 3 compatibility
- StaSh now supports python 3, though some commands still need to be ported.
- StaSh now shows a short tip on startup
pip
now supports wheels and commandline scripts and has been improved greatly.- the
python
command now has an interactive console man
can now also show help for other topics, e.g.man monkeypatching
- the
monkeylord
command helps improving desktop compatibility by providing monkeypatches for various modules and functions (e.g.subprocess
) easy_config.py
allows you to easily configure your StaSh using a UI.- access other filesystems using the
mount
,umount
andmc
commands. - StaSh can now run commands specified in
sys.argv
, allowing command execution using the pythonista URL schema. - And many more improvements and bugfixes everywhere.
- Python 3 compatibility
- Command Scripts
cowsay.py
dropbox_setup.py
easy_config.py
ftpserver.py
gci.py
gh.py
head.py
latte.py
mc.py
monkeylord.py
more.py
mount.py
ping.py
python3.py
rmdir.py
tail.py
totd.py
umount.py
webviewer.py
whatis.py
-
New Features
- New thread management system enables multiple jobs running at once.
- One foreground jobs and unlimited number of background jobs.
sys.stdin
,sys.stdout
andsys.stderr
are now replaced system wide to allow IO dispatch based on running threads.
- New thread management system enables multiple jobs running at once.
-
Improvements
- Runtime state is now managed by threads for simplicity and readability.
- Environment persistent level is now explicitly required by caller. No more magic top level thread.
-
Command Scripts
- New scripts
jobs.py
kill.py
fg.py
curl.py
- New scripts
-
New Features
- Attributed text (color and style) support
- Default font size is now 14 on iPad (increased from 12)
- True external keyboard support
- Killable threads
- StaSh is now installed as a Python module under
~/Documents/site-packages/stash
- Also adds a launch script as
~/Documents/launch_stash.py
for easy access
- Also adds a launch script as
- Attributed text (color and style) support
-
Improvements
- Largely redesigned the logic of user/script IO handling (modelled after pyte)
- Better scrolling
-
Command Scripts
- New scripts
du.py
- Summarize disk usage recursively- Replace
selfupdate.sh
withselfupdate.py
to enable more sophisticated installation functions.
- New scripts
-
Improvements
- Added
launch_stash.py
to run StaSh in a way that can survive through "global variable clearing" in Pythonista.
- Added
-
Command Scripts
- New scripts
wol.py
- Wake computer on LAN
- Changed scripts
pbcopy.py
- renamed fromcopy.py
to avoid name conflict and to be consistent with the OSX tool.pbpaste.py
- renamed frompaste.py
.
- New scripts
-
Bug Fixes
sys.path
is now correctly restored at command scripts exit.- Change directory no longer crashes when accessing folders inaccessible.
-
New Features
- StaSh now provides localized input history for running scripts.
- New
py_pdb
config option to enable dropping into pdb when a runing script errors out. This makes it convenient to debug Python scripts inside StaSh. - Added ipython style (up-key) history search
-
Improvements
- Started overhaul of the
git
command.- It now takes a more modular approach to separate complex sub-command into its own module.
branch
,merge
,reset
,fetch
sub-commands significantly improved.- Updated dependancies on latest dulwich release.
- Press
CC
(Control-C) while script is waiting for user input no longer breaks sub-sequent user input. - Better docstring for scripts
- Various bug fixes
- Started overhaul of the
-
Command Scripts
- New scripts
stashconf.py
- Change StaSh configuration on the flytelnet.py
- Simple telnet client
- Changed scripts
pcsm.py
- Removed. The scope of the design has been broadened to target all pythonista scripts. The script will be back when it is ready for the design change (under a different name). In the mean time, psiclient is a proof-of-concept client for Pythonista Script Index.
- New scripts
-
New Features
- New UI design with unified Input/Output areas
- No more screen flashing when scrolling. Smooth scroll at all time
- Support device rotation at any direction
- Manipulate cursor position with ease
- Consistent look and feel as a proper PC terminal
- External keyboard support
- Tab completion works flawlessly
- Navigate through command history with ⌘ (cmd) + up (↑) / down (↓)
- Swipe gesture on virtual key buttons
- Similar to what Pythonista builtin editor offers, you can now swipe left/right on the extra virtual key row to position cursor with better control and precision
- More virtual keys
- Show/hide on-screen keyboard with the KB button.
- Kill line easily with the CU (Ctrl-U) button
- New UI design with unified Input/Output areas
-
Improvements
- Auto-completion now takes account of cursor position and completes the corresponding word fragment
- You can now navigate back to the unfinished line when browsing through command history
- Single Gist file installation just got better. Now it requires no additional steps. Simply run the script and the full stack of files will be installed.
-
Command Scripts
- New scripts
crypt.py
- File encryption using AES in CBC mode
- Changed scripts
pcsm.py
-scsm
is renamed topcsm
(Pythonista Command Script Manager) to clearly state that the scripts are NOT StaSh specific. The Index repo is also renamed to Pythonista Command Script Index.
- New scripts
-
Various bug fixes
-
New Features
- The main
_stash
object is now callable. It is now more convenient for a Python script to issue Shell commands via the callable, e.g._stash('ls')
,_stash('pwd')
- Sub-command auto-completion system configurable via a JSON file (currently
supports
pip
andgit
) - Comments (both full line and trailing) are now allowed in shell scripts
- All arguments are now by default converted from
unicode
type tostr
type with utf-8 encoding before passing them to external scripts. The change is to recognise that Python 2.x and its libraries are not fully unicode compliant. This behavior can be turned off in config file. - Added a config option, py_traceback, to display full Python exception trace stack for command scripts.
- A lib folder is added for storing shared modules so command scripts do
not have to include them separately.
- These modules are stored as attributes of the main
_stash
object.
- These modules are stored as attributes of the main
- The main
-
Improvements
- Runtime now emulates sub-shell environment even more correctly.
- Unit tests added with Travis CI support.
- Documentation updates
-
Bug Fixes
- Multi-statements separated by semicolon in a single line should now work correctly in all cases
- White-spaces are now correctly recognized within double quotes
- Shell scripts now correctly works with pipes
- Various other bug fixes
-
Command Scripts
- New scripts
pip.py
- A pare-down client for PyPI that does search, install, remove, update, list, versions.- Only works for pure Python packages that do not require compilation
- No dependency handling at this stage but will report failure if installed package failed to import (that may be caused by dependency)
git.py
- Basic git client ported from shellistascsm.py
- StaSh Command Script Manager (initial attempt to build an index and a client for command scripts that perform list, install, remove and info)- It is really in a test phase and open to all suggestions.
- Check out the Index repo for how to register new command scripts
tar.py
- Manipulate archive files (tar, gzip, bzip2 format)find.py
- Search file/directory recursively in a file hierarchyxargs.py
- Construct argument lists and execute- This command enables some quite powerful operations. A few
examples are as follows:
- Delete all tmp files:
find . -n "tmp*" | xargs rm
- Find all Python files and archive them:
find ~/Documents -n "*.py" | xargs tar -zcvf scripts.tar.gz
- Rename all log files to log.old:
find . -n "*.log" | xargs -n 1 -I {} mv {} {}.log
- Delete all tmp files:
- This command enables some quite powerful operations. A few
examples are as follows:
mail.py
- Send emails with optional file attachmentcut.py
- Cut out selection portions of each line of a filewc.py
- Line, word and character countmd5sum.py
- Print or check MD5 checksumssha1sum.py
- Print of check SHA1 checksumssha256sum.py
- Print of check SHA256 checksumszip.py
- Package and compress files and directories
- Changed scripts
clear.py
now replacescls.py
to be consisent with the Linux counterpartcat.py
- now usable on binary filesselfupdate.sh
- now removes test related files.unzip.py
- now takes a-t
option to show file contentsprintenv.py
- now ignores special environment variables, e.g.$1
- New scripts
-
New Features
- Added virtual keys for commonly used symbols, e.g.
~/.-*|>
- The keys can be customized with
VK_SYMBOLS
option in.stash_config
- The keys can be customized with
- Shell scripts can now access arguments via special environment variables
(
$0
,$1
, ...,$#
,$@
) - Exit status is now available as
$?
- Background jobs are now allowed by appending an ampersand at the end of a
command, e.g.
httpserver &
.- Background jobs are executed in Pythonista main thread and can be
terminated by tap the close button on the interactive prompt panel.
This enables a script to perform housekeeping tasks recieving the
KeyboardInterrupt
exception. An example is thehttpserver
command. It releases the binding port when terminated and allows subsequent calls to the same command without restarting Pythonista.
- Background jobs are executed in Pythonista main thread and can be
terminated by tap the close button on the interactive prompt panel.
This enables a script to perform housekeeping tasks recieving the
- Added virtual keys for commonly used symbols, e.g.
-
Improvements
- Parser is redesigned and optimized. It should be more efficient and faithful to Bash in some edge cases.
- Runtime is optimized to make clear sub-shell emulation, especially on
variable and environment passing between shells of different levels.
- Multi-line shell scripts are now executed in a single thread for improved efficiency
- Auto-completion enhanced
- Command line history management enhanced
-
Command Scripts
- New scripts
ssh.py
- SSH client to either execute a command or spawn an interactive session on remote servers. pyte is used for terminal emulation and gives the command the feel of a full-fledged SSH client.scp.py
- Copy files from/to remote servers.ssh-keygen.py
- Generate RSA/DSA SSH Keys.man.py
- Show help message (docstring) of a given commandhttpserver.py
- A simple HTTP server with upload function (ripped from https://gist.github.com/UniIsland/3346170)edit.py
- Open any text type files in Pythonista editoropenin.py
- Show the open in dialog to open a file in external apps.quicklook.py
- iOS quick look for files of known typestouch.py
- Update timestamp of the given file or create it if not existsource.py
- Evaluate a script in the current environmentpython.py
- run python scripts or moduleswhich.py
- Find the exact path to a command scriptprinthex.py
- Print hexadecimal dump of the given fileversion.py
- Show StaSh installation and version information
- Changed scripts
env.py
- Replaced byprintenv.py
(env
is now an alias toprintenv
)bh.py
- Removed./dev/null
is accessible in StaShselfupdate.sh
- The GitHub branch to retrieve can now be customized via environment variableSELFUPDATE_BRANCH
(default ismaster
)
- New scripts
-
Various bug fixes
- initial release