Releases: Slackadays/Clipboard
0.9.1
๐ Summary
The Clipboard Project is an advanced clipboard manager for the terminal. No other one exists with features like an unlimited history, unlimited clipboards, and user friendliness all while being in the command line!
0.9.1 includes various fixes and improvements, plus a new "secret ignore" feature that lets you securely ignore secrets like passwords without storing them directly.
โจ New
- Added "secret ignore". Securely ignore secrets by doing
cb ignore --secret my_secret1
, and CB will savemy_secret1
's hash and compare all future copied content to it. If it matches, CB will not save what you copied. Clear the secret ignore rules withcb ignore --secret ""
, but be warned that this is irreversible!
๐ช Fixed
- Fixed unicode escaping in JSON
- Don't remove cut files if you have cancelled pasting them
- Handle the case where argv[0] doesn't exist (this happens on OpenBSD)
- Handle more cases where the clipboard lock file needs to be deleted
๐๏ธ Changed
- OpenSSL added as a required library
๐ฎ Looking ahead
The next release is likely 0.10.0 which will include the new script
action where you can run a script whenever you access a clipboard. I'm releasing 0.9.1 now just to get these improvements out the door while you wait for 0.10.0.
โ ๏ธ Note
There are no Windows arm64 builds for this release because I can't figure out how to get CMake to see the OpenSSL arm64 installation. If you can figure this out, that would be awesome!
0.9.0
The Clipboard Project is an advanced clipboard manager for the terminal. No other one exists with features like an unlimited history, unlimited clipboards, and user friendliness all while being in the command line!
Summary
Fixed a nasty bug on Linux, improved UX, and added a way to see your CB configuration!
New
- Faster building on systems with large core counts
- Added es_DO (Dominican Spanish) locale. This is currently identical to es_CO (Colombian Spanish)
- Added Config action
- Added SPDX license identifiers to clearly state what license CB uses
Fixed
- Fixed string length check in color formatting
- Fixed background process detection on Linux
- Fix a potential case where the output doesn't resize correctly
Changed
- ๐จ Breaking: ๐จ Adhere to XDG specifications for persistent clipboards
This changes the default location of all persistent clipboards from $HOME/.clipboard
to $HOME/.local/state/clipboard
. To move your existing persistent clipboards to this new location, all you need to do is copy everything from the .clipboard
directory to the .local/state/clipboard
one. For example, on Linux or macOS, do cp -R ~/.clipboard ~/.local/state/clipboard
. For Windows, the PowerShell command should be similar.
This does not affect you if you've set a custom persistent clipboard location using CLIPBOARD_PERSISTDIR
, or if you don't use persistent clipboards.
- Changed the C++ version to 23 in CMake
New Contributors
- @zeczen made their first contribution in #170
- @filiprojek made their first contribution in #178
0.8.3
Summary
Just a hotfix for macOS Sonoma and a couple UX improvements.
New
- Control characters such as newlines and feed returns now show up as their string representations in a dark font
Fixed
- Fixed macOS Sonoma not finding the
<algorithm>
header - Fixed async clipboard not updating to match new entries (todo: make this faster because this will be super slow for large clipboards)
0.8.2
About
The Clipboard Project is an advanced clipboard manager for the terminal. No other clipboard manager exists with features like an unlimited history, unlimited clipboards, and user friendliness all while being in the terminal!
Summary
These are some nice optimizations and fixes to keep CB high quality. :)
New
- Added async X11/Wayland clipboard compat! This allows you to copy multiple items without running CB each time. This feature works by creating a CB daemon that checks the X11/Wayland clipboard every two seconds and updates the internal clipboard if it detects a change.
- Optimized file reading
- Optimized color replacement to be 3x faster!
- Complain about a missing action if the chosen combination isn't available
- Added
NO_ALSA
compile option for CMake - Optimized History action by performing tasks while waiting for threads to complete
- Optimized MIME and file extension inference
- Optimized History action AGAIN by caching color formatting
- Check that the clipboard name is compatible with the host filesystem
- Added zsh completions
- Added
ansi
theme that uses the ANSI 3-bit color system (#159) - Added Antony Santos to bachata feature
Fixed
- Fixed typo in manpage
- Fixed the Load action not working in piped situations
- Fixed silent confirmations not working for many messages
- Fixed memory issue on Clang ARM causing broken colors
- Fixed typo in help message
- Fixed displaying history on Windows
- Fixed segmentation fault if giving an empty argument that expects a string
- Fixed JSON escaping for Info and History actions
- Fixed JSON escaping not working for Unicode characters
- Fixed "last changed" in Info reporting changes for unrelated files when pasting
- Fixed not releasing a clipboard lock in the Status action
Changed
- Changed "All of your clipboard with content" to "All your clipboards with content"
- Changed Info JSON's "lastChanged" key to "contentLastChanged"
- Only show progress messages if an action takes 500ms or longer
- Updated CMake C++ version to C++23
0.8.1
The Clipboard Project is an advanced clipboard manager made for the terminal. It offers many useful features like unlimited history, a user friendly design, and a JSON API. That's why we like to say it's your new second brain!
In 3 Sentences
Added tons of little features and user experience improvements, as well as some huge optimizations! There's also a few bug fixes to help keep Clipboard as high quality as ever.
Like always, only the latest version is supported, so don't hesitate to upgrade to this one.
New
- Improved Flatpak builds
- Added full paths to Status and History JSON actions so that you can select them in dmenu scripts
- Prioritized Wayland clipboard writing over X11
- Optimized external clipboard syncing for Status
- Added regex support for piping into Paste
- Added automatic filesystem syncing on exit
- Added fancy schmancy sound effects when completing after losing focus or upon an error (currently Linux only)
2023-06-23.21-29-06.mp4
- Added
CLIPBOARD_NOAUDIO
to disable all sound effects (including the existing terminal bell) - Show all actions available in help message
- Added elapsed time to progress indicator
- Added creation date and owner of clipboard to Info (currently only for non-Windows)
- Added current progress to terminal title
2023-06-23.21-53-29.mp4
- Added smart data pasting where the clipboard number and entry plus data type will be stored in the new file's name
- Added ability to use as a desktop app by running a custom script in the desktop entry
- Added autocorrect for bad actions in case of misspells
- Use automatically generated data from https://www.garykessler.net/library/file_sigs.html to make MIME and file extension inference a lot more complete
- Added empty clipboard editing by making a new empty file
- Added support for specifying multiple history retention limits at once
- Added support for decimal numbers in history retention limits (like 100.42069gb or 800.85w)
- Added support for history retention limits in seconds
- Removed
CLIPBOARD_NOEMOJI
because CB now uses no emoji anymore ๐ - Optimized History action with multithreading! If you have hundreds of thousands of history entries, you'll notice that you're now getting kickASS performance here. This isn't python or webshit we're talking about here.
- Optimized History with POSIX AIO! You'll need Linux, macOS, FreeBSD, or NetBSD to use this.
- Optimized History by removing useless code! There was a little bit of fat to trim.
2023-06-29.08-22-29.mp4
-
Optimized bar drawing in Status, Info, History, and Search
-
Added basic Bash and Fish completions
-
Added support for using default (English) action names even when another language is selected
-
Added Search JSON action
-
Added Snap support! Now you can use this Flatpak competitor if you want
-
Added $ORIGIN support to installs so that Snap works easier
-
Added smart environment variables which can tell between true and false values
-
Added compatibility with
--
to mark the end of an option list -
Optimized color formatting to be 30% faster!
-
๐จ BREAKING CHANGE ๐จ Replaced
CLIPBOARD_ALWAYS_PERSIST
withCLIPBOARD_CUSTOMPERSIST
so that you can choose which clipboards should be persistent using regex. So, if you hadCLIPBOARD_ALWAYS_PERSIST
set to1
before, setCLIPBOARD_CUSTOMPERSIST
to.*
. -
Added ability to copy text without quotes (") if none of the arguments are files
Here's how this works. Before, you'd need to do the following to copy text directly:
$ cb copy "Hello world!"
Now, as long as each "word" is not a valid filename, you can do the following:
$ cb copy Hello world!
- Improved the whitespacing of inverse text
- Improved Spanish, Portuguese, and Turkish translations (thanks, GH Copilot for pt/tr!)
- Added French and German locale support
- Added fuzzy file searching in case you mispellll a filename
- Optimized MIME inference
- Optimized file reading for small files
Technical Stuff: On Linux and FreeBSD, the pipe size is 65K bytes and on macOS, OpenBSD, NetBSD, and DragonFlyBSD, the pipe size is 16K bytes. Reading content with a size less than these sizes will now only take 3 syscalls instead of 4.
Fixed
- Fixed focus reporting characters showing up
- Fixed some box drawing characters showing up as thicker ones on certain terminals (LOOKING AT YOU, KDE KONSOLE!)
- Fixed size_t warning on macOS
- Fixed exporting clipboards which have bad symlinks
- Made Flatpak nightly instead of pinned to 0.8.0
- Improved accuracy of calculating displayed message lengths
- Fixed "last changed" date showing creation time on non-Windows in Info
- Fixed terminal colors sometimes sticking around when doing Ctrl+C
- Fixed indicator sticking around when doing Ignore with zero patterns set
- Fixed history retention limit for size not being able to go above 4GB (the size of an unsigned 32 bit integer)
- Fixed a deque access error in Search
- Fixed Search results sometimes going off screen
- Fixed Clear All showing a "Cleared XYZ clipboards" message even if canceling
- Fixed color formatting for Note action
- Improved error handling in Copy action
Changed
- ๐จ BREAKING CHANGE ๐จ Renamed Status and History JSON's "name" key to "filename"
- Changed behavior of a couple actions to prioritize argument data over piped data
- Switched builds from MinSizeRel to Release optimization
- Changed an emoji to box-drawing characters
- Made progress indicator a large and long bar with a background
- Made default color scheme a little darker
- Made top bars of output inversely colored, and they look so good now!
- Changed success/error emojis to specially formatted unicode equivalents
- Changed "(Unknown)" as default content type in Info to "text/plain"
๐ Notes
If you're a package maintainer for CB on Linux, then you'll need to add ALSA as a dependency.
The new History multithreading optimization only works if your system has multiple CPU cores available. The more cores you have, the faster History will be.
0.8.0
New
- Basically UNLIMITED clipboard history! ๐๐คฉ You can't say that about CopyQ, Maccy, Flycut, Clipboard Indicator, GPaste, Alfred, clipster, Raycast non-Pro, Clipboard Manager Electron, Clipped, Parcellite, Budgie Clipboard, Clipboard Master, Clippy, or Pano.
- Customizable clipboard entry history range from 1 to 2^32 - 1 with the
CLIPBOARD_HISTORY
environment variable. So, go ahead. Crank that b*tch up to a billion. It's all up 2 you! ๐ - You can also choose a date range by putting
y
,m
,w
,d
, orh
after the number instead to specify years, months, weeks, days, or hours respectively to only keep that old content, like6m
or2w
. - Alternatively, you can also add
tb
,gb
,mb
,kb
, orb
instead to specify a maximum data size to keep, like100gb
or5mb
. - Remote clipboard sharing! You can now seamlessly share copied text across SSH sessions, and you only need CB installed on the remote system. To my knowledge, NO other clipboard manager has this feature. ๐ฅ
2023-05-28.21-36-35.mp4
- Added
CLIPBOARD_NOREMOTE
to disable remote clipboard reading/writing - Added the Edit action which lets you edit your clipboard text content right from the command line in one step!
2023-05-29.21-43-12.mp4
- Added the
CLIPBOARD_EDITOR
environment variable to choose which editor to use. Note: CB will automatically search for a couple fallbacks if it can't get an editor from theCLIPBOARD_EDITOR
,EDITOR
, orVISUAL
environment variables - Added clipboard searching! Now you can search either one clipboard or all of them with one or many queries of your choosing. CB will automagically sort the top results for you with what clipboard they're in and what entry each result is so you can quickly get to them.
2023-06-02.17-28-28.mp4
- A new option for Linux users: Flatpak! There are now zero (0) excuses to not get Clipboard even if your system is older than otherwise required. Go grab that Flatpak from the Assets list below, unzip it, and install it with
flatpak install clipboard-flatpak-amd64.flatpak
. - Added focus notifications that will play a sound for you if you're looking at a different window while CB is running a long task
- Added History action to show entire history, or queue up certain entries by adding those entries after the action, like
cb history 10 42
- Added history entry capabilities to the clipboard name selector, so now you can specify clipboard 5, entry 10 by doing an action like
paste5-10
- Added
--entry
flag to specify the entry by itself like--entry 10
. This means you can now effortlessly rewrite history by copying content into an existing entry! - Added total item size in Info action for regular files and directories
- Added total clipboard size to Info
- Show binary content type and size in Status and History actions
- Added locking to Status action
- Added the eye candy ๐ญ treatment to the Show action
- Added documentation to the website at getclipboard.app/docs
- Separated all the actions out into their own compilable .cpp files to increase build speed
- Added more MIME types to the inference system
Fixed
- Fixed improper JSON escaping
- Show the real size of directories when calculating total sizes on non-Windows platforms
- Fixed a crash that could happen due to assuming there are clipboard contents when there aren't
- Simplified and made directory size calculations slightly more correct
- Fixed X11 sometimes not working (AGAIN!)
- Added terminal size sanity check for CI and broken terminal situations
- Fixed total size calculations failing due to bad symlinks
Changed
- Changed Easter Egg from undocumented
--ee
flag to--bachata
flag in readme - Don't show raw binary content in JSON outputs
- Switch from TMPDIR to XDG_RUNTIME_DIR in temporary filepath logic
- The Juice website template is now bundled to prevent future availability issues
- Renamed a couple JSON parameters for clarity
- Replaced an emoji with a Unicode version
๐จ WARNING!
The new history feature makes CB incompatible with how older versions stored clipboard contents. If you have existing content when you upgrade, then it might not appear in CB, although it won't be deleted. To fix this, take everything stored in the data
folder of your existing clipboards and move them to a "0" subfolder within data
. So, if you have the file Foobar
stored under data
, the new setup will look like the folder 0
under data
, and 0
stores the file Foobar
. To find where CB keeps your clipboards, use the cb info
command and check the line that says Stored in...
.
If you don't already have content stored with CB, then this warning doesn't apply to you.
๐ Note
Because the new History action is highly optimized, if you store a lot of entries in your clipboard history, then it may overload your terminal with too much content to handle at once. To fix this, please use a GPU accelerated terminal like Kitty or Alacritty.
The remote clipboard feature depends on OSC 52 which is a feature only a few terminals support, some being Kitty and Alacritty again. You'll also need to enable clipboard reading in the terminal for this feature to read the content remotely. If your favorite terminal doesn't support OSC 52, then go complain to them for not being standards-compliant.
0.7.1
One more thing about xclip
X11 is now actually deprecated by RedHat, so now xclip is deprecated for real. :)
New
- Added Import and Ignore actions
- Improved the Export action
- Added a new and improved eye candy border to Status action
- Improved Status UX by not limiting it to terminal height
- Added JSON output to Status
- Added a C++20 implementation of last write time for Info for Windows
- Cut down write() syscalls down majorly in the Status action
- Added package managers to install scripts
- Made tests in the test suite easier to discern
- Added Wayland tests
Fixed
- Fixed the eye candy box headers creating an almost infinite loop if provided a clipboard name longer than the width of the screen
- Escape quotes in the user-generated Note section of Info JSON
- Fixed progress indicator not showing up for some actions
- Fixed indicator sticking around after doing certain actions
- Fixed filesystem errors not showing up sometimes
- Spent 10 hours changing one line to make large Wayland copies work ๐ฉ
Changed
- Moved eye candy header text to left from center
- Replace light bulb emojis ๐ก with dots instead of spaces
- Don't show "(p)" in Status for persistent clipboards
- Sped up progress indicator
Important
I'm working on how the unlimited clipboard history feature is going to work, so it should appear soon in a future release.
0.7.0
see ya later, xclip!
CB 0.7.0 now matches the features that you'll find in xclip
and wl-clipboard
. So, if you've been using them until now, feel free to say adiรณs to those legacy tools!
New
- Strip all emojis from output with
CLIPBOARD_NOEMOJI
- Add
--no-confirmation
flag to disable confirmation messages - Show raw filepaths of all copied files by piping
cb show
- See Last Changed date of clipboards with Info (currently not available for Windows yet)
- Add file locking exception if CB is in a pipe with itself
- Works with more available GUI MIME types
- Tons of new GitHub Actions to more thoroughly test CB
- Swap clipboard contents with the Swap action
- Export clipboards with the Export action (currently in Beta state)
- Only use Wayland if X11 fails
- Specify a custom MIME type to request from GUIs by adding
--mime (mime)
- See available MIME types in Info
- Info now has a pretty border around it
- Replace a Unicode box-drawing character that is unsupported many places with a similar one that is supported everywhere
- Get info from Info in JSON format by piping it out
Fixed
- "[blank]" would sometimes show up in messages with color disabled
- CB would send text content to GUIs even if it's empty
- The progress indicator bar would sometimes stick around
- CB would offer all MIME types by default to GUIs
- CB would write to GUIs after doing Info
Changed
- All Clipboard Project invocations are now
cb
. For package maintainers, note that there is now only acb
binary instead of aclipboard
binary and acb
symlink. Additionally,libclipboardx11.so
andlibclipboardwayland.so
are nowlibcbx11.so
andlibcbwayland.so
respectively. - Clarify some parameters in Info
- Change decimal precision from 3 to 2 for better UX
- Prepend a light bulb emoji ๐ก to the beginning of help messages
0.6.0
This is Clipboard 0.6.0, the Ridonkulous Update!
New
- A readme chock-full of documentation and poetic writing!
- ๐จ
clipboard
is deprecated: ๐จ Please usecb
instead! The old style will be removed in 0.7.0 and you'll get a warning message in the meantime. CLIPBOARD_NOPROGRESS
environment variable and-np
and--no-progress
flags disable progress messagesCLICOLOR
can disable color andCLICOLOR_FORCE
can enable it again- Byte counts are now formatted in a more user-friendly way that's also localized
- The Paste and Show actions now support regex to choose what gets pasted or shown
- The Info action shows detailed information for a specific clipboard
- The Load action copies entire clipboard contents from one to another, enabling many potential workflows that were previously clumsy to do.
- Display the used invocation in help messages
Fixed
- X11 compat is now more reliable thanks to complete synchronization
- Fix adding text content not working at all
- Fix specifying clipboards as flags not working for persistent clipboards, for example now you can do
-c _blah
to specify the persistent clipboard_blah
- Fix the Status action getting treated as a writing action
- Fix various actions not exiting with a failure exit code upon failure
Changed
- Before, CMake would make the
clipboard
binary and acb
symlink. Now, it makes acb
binary and aclipboard
symlink. This means Clipboard will now work without changes on Haiku. - Show entire clipboard file contents with the Show action
0.5.0
New
- Remove content with the power of regex with the
remove
action - Make note of your clipboards with the
note
action - Pick a color scheme to go with your personal style with
CLIPBOARD_THEME
- Set the language manually with
CLIPBOARD_LOCALE
- Added locking to clipboards to prevent data races
- See more types of data from desktops with tons of new supported MIME types
Fixed
- Fix Clipboard sticking around after exiting
- Fix Clipboard not processing KDE Dolphin filepaths which have
\r
at the end - Fix Windows piping not being bit-correct
- Work around X11 INCR not working properly on some platforms (looking at you, Pop!_OS and Manjaro)
Changed
- Changed readme marketing copy to be interesting :)
- GHA tests now report code coverage to Codecov to help check how much of Clipboard is actually getting tested