Console Bibliography
Project description
coBib
coBib is a simple, console-based bibliography management tool. It is the result of the need for an easy-to-use alternative to full-blown reference managers like Mendeley or Zotero. As such it follows some basic design goals:
- plain-text database: which means you get full access and control over the database.
- git-integration: as a benefit of the above, you can keep track of your database through version control.
- centralized database, location-independent library: this means, that coBib only manages the database file in a centralized fashion but allows you to spread the actual contents of your library across the entire file system (this is the major different to papis).
- command-line and TUI support: all features are available through the command-line as well as a textual-based TUI
Here is an example screenshot of the TUI when listing the entries in your database:
And here is an example screenshot for listing search results:
Installation
For all common purposes you can install coBib via pip:
pip install cobib
If you would also like to install the man-page, you need to download the source code and do the following:
git clone https://gitlab.com/cobib/cobib
cd cobib
make install_man_pages
Arch Linux
coBib is packaged in the AUR.
Windows
coBib might work on Windows as is, but it is not being tested so no guarantees are given. If you are using Windows 10 or later and are running into issues, you should be able to install and use coBib's full functionality within the Linux subsystem.
Getting Started
To get started with coBib, you check out:
- the
cobib-getting-started.7man-page:cobib man getting-started
- the interactive tutorial:
cobib tutorial
[!NOTE] If you see an
includedirective on the next line, consider switching to the online docs, where the directive is replaced with man-page contents.
.. include:: src/cobib/man/cobib-getting-started.7.html_fragment
Configuration
You can overwrite the default configuration by placing a config.py file in ~/.config/cobib/.
The easiest way to get started with this file is by copying example.py
or by using:
cobib _example_config > ~/.config/cobib/config.py
You can then modify it to your liking.
You may also specify a different config file at runtime by using the -c or --config command line argument or by specifying a custom path in the COBIB_CONFIG environment variable.
You can also disable loading of any configuration file by setting this environment variable to one of the following values: "", 0, "f", "false", "nil", "none".
Finally, be sure to take a look at the man page (man 5 cobib-config) and/or the online documentation for more information.
Plugins
coBib supports the implementation of plugins!
You can find an example plugin in here
or read the docs of cobib_dummy.
You can find a complete specification of coBib's entry-points
in the cobib-plugins.7 man-page:
cobib man plugins
[!NOTE] If you see an
includedirective on the next line, consider switching to the online docs, where the directive is replaced with man-page contents.
.. include:: src/cobib/man/cobib-plugins.7.html_fragment
List of known plugins
Below is a list of known plugins. If you wrote your own, feel free to add it here!
cobib-zotero: an importer backend for Zotero
Documentation
coBib's documentation is hosted here. That page also contains a getting started guide!
If you would like to generate a local version during development, you need to clone the source code, and install pdoc in order to generate it:
git clone https://gitlab.com/cobib/cobib.git
cd cobib
pip install pdoc
pdoc -d google -e cobib=https://gitlab.com/cobib/cobib/-/blob/master/src/cobib/ -t docs/jinja -o build/html src/cobib tests
You can then browse the documentation from build/html/cobib.html.
History
I have started this project when I was looking into alternatives to popular reference managers such as Mendeley, which has more features than I use on a regular basis and does not allow me to work from the command line which is where I spend most of the time that I spend on the computer.
Hence, I have decided to make it my own task of implementing a simple, yet fast, reference manager. coBib is written in Python and uses a YAML file to store its bibliography in a plain text format.
Alternatives
Besides coBib there are many other tools for managing your bibliography. Below is a selection (alphabetical) of open source tools that I am aware of:
- bibiman: CLI, TUI
- bibman: CLI, TUI
- jabref: GUI
- papis: CLI, TUI, local web app
- pubs: CLI
- xapers: CLI, TUI
- zotero: GUI, remote web app
Changelog
You can find the detailed changes throughout coBib's history in the Changelog.
License
coBib is licensed under the MIT License.
[^1]: References like this one get interpreted by the documentation generator. If you are reading this as the README page, you may find the online documentation more enjoyable.
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
6.0.1 - 2025-10-25
Pypi: https://pypi.org/project/cobib/6.0.1/
Changed
- coBib no longer requires the
requests-oauthlibpackage - (DEV) the dummy plugin has been extracted to the
cobib-plugin-template(!420)
Fixed
- ensured any non-Python files (such as man-pages) are correctly included in installations from Python wheels (#192)
6.0.0 - 2025-10-11
Pypi: https://pypi.org/project/cobib/6.0.0/
Prelude
The --zotero backend for the import command is now provided by the
cobib-zotero plugin.
coBib now respects the XDG base directory specification resulting in some changes to default file locations. You will see a warning if this affects you.
Added
- the
cobib.exportersentry-point to support export backend plugins (#160,!407) - unified the journal abbreviation logic of the
--bibtexexported (#187,!410)- consolidated the CLI arguments in
--journal-format - added the
config.exporters.bibtex.journal_formatsetting
- consolidated the CLI arguments in
- the zip exporter can be configured to include/skip file attachments and
external notes (#153,!411)
- the
--zipexporter takes the optional arguments:--skip-files,--include-files,--skip-notes, and--include-notes - these CLI options take precedence over the new configuration settings
config.exporters.zip.skip_filesandconfig.exporters.zip.skip_notes
- the
- Python 3.14 is now officially tested and supported
- YAML backends for the
importandexportcommands (#188,!412)
Changed
- the
searchcommand results now indicate what source a match came from (#174,!404)- (DEV) the
Matchtuple now requires a third item calledsource
- (DEV) the
- the
cobib.manentry-point now supports registered man-pages in multiple categories (#186,!406) - the
exportcommand can now only export via one backend at a time (!407) - the XDG base directory specification is now being respected. (#151,!409)
This resulted in the following settings taking on new default values:
config.database.cache = "$XDG_CACHE_HOME/cobib/databases/"config.database.file = "$XDG_DATA_HOME/cobib/literature.yaml"config.logging.logfile = "$XDG_STATE_HOME/cobib/cobib.log"config.logging.version = "$XDG_CACHE_HOME/cobib/version"config.shell.history = "$XDG_STATE_HOME/cobib/shell_history"config.utils.file_downloader.default_location = "$XDG_DATA_HOME/cobib/"
Deprecated
- the
config.logging.cachesetting has been deprecated since it is no longer being used (!409) - the
--abbreviateand--dotlessarguments to the--bibteximported; instead one should use--journal-formatwithabbrevordotless(#187,!410)
Removed
- the deprecated
zoteroimporter backend. Please switch over to using thecobib-zoteroplugin instead! (#166,!408) - dropped support for Python 3.9
- this also removed the now unneeded
cobib.utils.entry_pointshelper
- this also removed the now unneeded
- the
config.commands.search.highlightssetting which was deprecated in 4.2.0
5.5.5 - 2025-10-01
Pypi: https://pypi.org/project/cobib/5.5.5/
Fixed
- (DEV) more Gitlab PyPI publishing fixes
5.5.4 - 2025-10-01
Fixed
- (DEV) the Gitlab PyPI publishing job
5.5.3 - 2025-10-01
Fixed
- (DEV) the snapshot unittests (again...)
5.5.2 - 2025-10-01
Fixed
- (DEV) the snapshot unittests
5.5.1 - 2025-10-01
Breaking Change
- The
notecommand switched from using thenotefield for the path to the associated note file to thenotesfield. While technically a breaking change, the database loading is done gracefully and should handle any conflicts that arise from this (which are only pathological cases anyways). The benefit of avoiding the clash with Bib(La)TeX'snotefield outweighs the severity of this breaking change.
Changed
- the
lintcommand will not resolvelogging.CRITICALlinting messages automatically, ensuring that conflicts requiring manual intervention do not result in data loss (#181,!402) - (DEV)
Entry.notehas been renamed toEntry.notes(#181,!402)
Fixed
- the
unify_labelsstep of thetutorialno longer changes one of coBib's shipped files in-place, meaning the tutorial can actually be run more than once (#178) - compatibility with
textual>=6.2 - the
notecommand no longer clashes with Bib(La)TeX'snotefield and instead stores the path to the associated note file in thenotesfield (#181,!402)
5.5.0 - 2025-09-27
Pypi: https://pypi.org/project/cobib/5.5.0/
Prelude
coBib has three exciting new features:
- an interactive shell which you can trigger using
cobib --shell - a builtin guided tutorial which you can run with
cobib tutorial - a builtin manual which you can read via the new
mancommand
Added
- the
mancommand (!in the TUI) for viewing coBib's man-pages (#154,!377) - the
cobib.manentry-point to allow plugins to register their own man-pages - the
--shellargument to the maincobibexecutable (#157,!379)- This is mutually exclusive with providing any command and will open an
interactive shell instead, in which multiple commands can be executed in
sequence. Read the
cobib-shell.7man-page for more details. - this also comes with the new
PreShellInputandPostShellInputevents (#163,!381) - this also comes with the new optional dependency
prompt_toolkitwhich enables advanced line-editing features and preserves the executed command history of theShell(see also the newconfig.shellsettings) (#165,!384)
- This is mutually exclusive with providing any command and will open an
interactive shell instead, in which multiple commands can be executed in
sequence. Read the
- the
--bibtexbackend for theimportcommand (!380)- this also comes with the new
PreBibtexImportandPostBibtexImportevents
- this also comes with the new
- the
ModifyCommand.moficiation_detailsattribute which stores the captured log messages when using the--drymode (!391) - the
cobib.utils.consolemodule (!391) - the
modifycommand can now be applied without a filter to act on all entries (#172,!396) - the
tutorialcommand (#164,!400)
Changed
- moved
cobib.ui.components.LoggingHandlertocobib.utils.logging.LoggingHandler(!391) - when listing entries with
--sorta natural sorting order will be used (#170,!395)- this is unlikely to go noticed unless one sorts by a numerical field with varying numbers of digits
Deprecated
- the
--zoterobackend for theimportcommand (!380)- this backend will be replaced by the
cobib-zoteroplugin in time for the next major release
- this backend will be replaced by the
Fixed
- the progress indicator of search and download progress in the TUI (#158,!376)
- querying for
--helpin the TUI no longer crashes with certain commands (#161,!378) - a bug when parsing author names and the BibTeX source contained line breaks (!380)
- inline editing a new field during review no longer breaks (#168,!393)
- the
opencommand can now handle files opening directly inside the terminal (#173,!397) - renaming files when an entry's
labelchanges duringeditormodify, no longer hard-codes the filetype topdf(#175,!401)
5.4.0 - 2025-08-02
Pypi: https://pypi.org/project/cobib/5.4.0/
Prelude
The online documentation and man-page(s) have been overhauled entirely.
Package maintainers beware that the Makefile has new dependencies!
Added
- the
verbositykeyword argument to theTUIsuch that the log screen of the TUI respects the--verboselevel provided from the command-line - the
cobib.utils.logging.DEPRECATEDandcobib.utils.logging.HINTconstants to indicate the custom logging level numeric values - the
--yesargument to thedeletecommand (#152,!363)
Changed
- the single man-page (cobib.1) has been split into many and their content has been majorly updated (!342)
- the online documentation has been overhauled and now integrates the man-pages directly (to avoid duplication) (!342)
Fixed
- the
importcommand will now correctly generate agitcommit - the TUI no longer crashes when using
:showto jump to an unknown label - the TUI no longer crashes when trying to execute an unknown command
- the TUI now respects the
cobib.commandsentry points - the TUI now respects the active visual selection correctly for commands triggered via the prompt
- the TUI no longer crashes when trying to sort after aborting a previous sort
- the TUI no longer crashes when a search returns no results (#150,!335)
- the TUI no longer crashes when loading an empty database (#150,!335)
- some edge cases for resolving DOI URLs have been resolved (#155,!355)
5.3.0 - 2025-02-08
Pypi: https://pypi.org/project/cobib/5.3.0/
Added
- the ability to remove fields entirely via the
modifycommand (#142,!299) - a hint in the documentation how to filter for (non-)existence of fields (#141)
- the coBib command
promptto the TUI's command palette (!310)
Changed
- HTTP requests are now done inside of
requests.Sessioninstances (!233)
Fixed
- the
Escapekey during an input prompt triggered after aConfirmprompt (e.g. a cancelledquit) - the behavior of the
HomeandEndkeybindings in the TUI's search view (!310) - the ability to
quitthe application from the command palette (!310)
5.2.3 - 2024-12-15
Pypi: https://pypi.org/project/cobib/5.2.3/
Fixed
- the interactive handling of notes inside the TUI (#148,!288)
5.2.2 - 2024-12-06
Pypi: https://pypi.org/project/cobib/5.2.2/
Breaking Change
- The
config.theme.darkandconfig.theme.designsettings have been replaced by the newconfig.theme.themesetting, which can be either the name of one of textual's builtin themes, or a customtextual.theme.Themeinstance (#147,!279). Due to how recent these settings have been introduced (as part of 5.2.0), I am opting for a quick removal in this bugfix release rather than a proper version bump (in the sense that they have likely not been adopted, yet) and the severness of the bug that this is causing outweighs the needs here.
Fixed
- compatibility with
textual>=0.86
5.2.1 - 2024-10-30
Pypi: https://pypi.org/project/cobib/5.2.1/
Fixed
- compatibility with
textual>=0.80
5.2.0 - 2024-10-30
Pypi: https://pypi.org/project/cobib/5.2.0/
Prelude
With the addition of the new note command, the database entry fields called
"note" have obtained a special meaning. Use the lint command to check
whether your database is affected by this. If it is, you should rename those
fields.
Added
- new configuration settings to customize the appearance of coBib (!222):
cobib.config.theme.dark: to specify whether a dark or light theme is usedcobib.config.theme.design: to customize the colors themselves- the following settings to customize the appearance of
rich.Syntaxdisplays:cobib.config.theme.syntax.themecobib.config.theme.syntax.background_colorcobib.config.theme.syntax.line_numbers
- the
notecommand (#139,!206). Please refer to its online documentation or the man-page for more details on how to use it. This new command comes with:- the
cobib.config.commands.note.default_filetypesetting - the
PreNoteCommandandPostNoteCommandevent hooks
- the
- (DEV) the
add_filesargument to theBaseCommand.gitfunction - Python 3.13 is now officially tested and supported
- new configuration settings for the search command (#146,!269)
- For dealing with skipping/including associated files during searches:
cobib.config.commands.search.skip_filessets the default--skip-filesoverwrites this at runtime (this is not actually new)--include-filesoverwrites this at runtime (the opposite)
- For dealing with skipping/including associated notes during searches:
cobib.config.commands.search.skip_notessets the default--skip-notesoverwrites this at runtime (this is not actually new)--include-notesoverwrites this at runtime (the opposite)
- For dealing with skipping/including associated files during searches:
Changed
- the keybinding to recursively toggle all folds in the TUI's search result view
was changed from
ENTERtoBACKSPACE(!218) - (DEV)
cobib.ui.components.entry_pointswas moved tocobib.utils.entry_points - replaced the custom help screen with textual's new builtin help panel (!240)
Fixed
- the behavior of the
HomeandEndkeybindings in the TUI's list view (!217) - gracefully handles Zotero imported entries without a
journalfield (#145)
5.1.3 - 2024-08-23
Pypi: https://pypi.org/project/cobib/5.1.3/
Fixed
- the behavior of the
HomeandEndkeybindings in the TUI's list view (!217)
5.1.2 - 2024-06-23
Pypi: https://pypi.org/project/cobib/5.1.2/
Fixed
- support database locations in nested folders of a git repository (!204)
5.1.1 - 2024-05-28
Pypi: https://pypi.org/project/cobib/5.1.1/
Fixed
- when printing the changelog, do not remove list indents
5.1.0 - 2024-05-28
Pypi: https://pypi.org/project/cobib/5.1.0/
Prelude
Check out my blog post to learn more about the features of this new release: https://mrossinek.gitlab.io/programming/cobib-becomes-fuzzy/
Added
- approximate (or fuzzy) filter matching and search functionality (#107,#130,!177)
- the
listandsearchcommands now support the following features to perform approximate filter matching and searching, respectively:- LaTeX sequences can be decoded to Unicode characters:
- using
--decode-latexfrom the command-line - setting
config.commands.list_.decode_latex = True - setting
config.commands.search.decode_latex = True
- using
- Unicode characters can be converted to a close ASCII equivalent:
- using
--decode-unicodefrom the command-line - setting
config.commands.list_.decode_unicode = True - setting
config.commands.search.decode_unicode = True
- using
- a number of fuzzy errors can be set (this requires the optional dependency
regexto be installed):- using
--fuzziness <int>from the command-line - setting
config.commands.list_.fuzzinesto some integer - setting
config.commands.search.fuzzinesto some integer
- using
- LaTeX sequences can be decoded to Unicode characters:
- the
- (DEV) the following method arguments have been converted to be accepted only
as keyword arguments:
- in
cobib.database.Entry.matches:ignore_case - in
cobib.database.Entry.search:context,ignore_case, andskip_files
- in
- (DEV) the return-type of
cobib.database.Entry.searchhas been changed
5.0.1 - 2024-05-01
Pypi: https://pypi.org/project/cobib/5.0.1/
Fixed
- the ability to use an empty string as the separator in
config.database.format.label_suffix(#138)
5.0.0 - 2024-04-28
Pypi: https://pypi.org/project/cobib/5.0.0/
Added
- the ability to add custom
commands,importers, andparsersthrough entry points (#135, !139)- (DEV) a dummy plugin show-casing these extensions
Changed
- the entire
shell_helpermodule has been replaced as follows (!139):- the following deprecated helper methods were removed without replacement:
_list_commands_list_filters_list_labels
- the following secondary commands have been refactored:
_lint_databaseis nowcobib.commands.lint.LintCommand_unify_labelsis nowcobib.commands.unify_labels.UnifyLabelsCommand_example_configis nowcobib.config.command.ExampleConfigCommand
- the following deprecated helper methods were removed without replacement:
- the interactive disambiguation mechanism during the
addcommand now handles multiple matching related entries (#121,!168)- this includes the ability to
cancelthe disambiguation and entry addition
- this includes the ability to
Removed
- the previously deprecated
consoleattribute of all commands has been removed (!139) - the previously deprecated
promptattribute of all commands has been removed (!139) - the
cobib.ui.shell_helperandcobib.utils.shell_helpermodules have been removed (!139) - the previously deprecated
--updateargument of theaddcommand (!168) - the previously deprecated
--skip-existingargument of theaddcommand (!168) - the previously deprecated
LabelSuffix.CAPTIALattribute (!168) - Python 3.8 is no longer supported (!173)
4.5.0 - 2024-03-17
Pypi: https://pypi.org/project/cobib/4.5.0/
Added
- the new
cobib.utils.context.get_active_appmethod which returns any running textual App and replaces the need for thecobib.utils.prompt.Prompt.consoleandcobib.utils.progress.Progress.console(which have been removed) (!137) cobib.parsers.YAMLParser.parsecan now also parse strings directly (rather than always interpreting the argument as the path to a file) (!137)- the
reviewcommand (#131,!137). Please refer to its online documentation or the man-page for more details on how to use it. - the
cobib.database.Entry.mergemethod (!137)
Changed
- log messages will now be displayed in the
LogPanelof the TUI (which can be toggled with thezkeybinding) (#132,!133) - the
cobib.ui.components.promptmodule has been refactored intocobib.utils.prompt(!133)
Deprecated
- the
consoleargument to all commands has been deprecated since it no longer has any effect (!133) - the
promptargument to all commands has been deprecated since it no longer has any effect (!133) - access to the following
shell_helpercommands will change in the next release:cobib _lint_databasewill becomecobib lintcobib _unify_labelswill becomecobib unify_labelscobib _example_configwill becomecobib example_config
Fixed
- loading a cached database will be bypassed during
_lint_database(#133)- to support this the
bypass_cachekeyword-argument was added to theDatabase.readmethod
- to support this the
Removed
- official Windows support label. It might work but no guarantees are made (#136)
4.4.0 - 2023-12-15
Pypi: https://pypi.org/project/cobib/4.4.0/
Added
- a primitive caching mechanism to speed up the database loading. This feature
is enabled by default and will store its cache at
~/.cache/cobib/databases/. You can configure the location viaconfig.database.cacheor even disable caching entirely by changing this setting toNone. (see also #129 and !108) - added the
-r/--removeoption to themodifycommand (#128)- this can achieve the opposite of
-a/--addin the sense that it will try to remove the specified modification from a list or subtract a number from numeric values - other field types than lists or numbers are not supported by this option
- this can achieve the opposite of
- added the
-l/--limitoption to thelistcommand (#127)- exposed the
ListCommand.sort_entriesmethod in the public API - added the
ListCommand.execute_dullmethod in the public API
- exposed the
- the
search,export, andmodifycommands now also support sorting and limiting options to be passed onto thelistcommand (along with the already existing filtering options) - the
config.tui.tree_foldingsetting which allows you to configure the default folding state of the tree nodes in the TUI's search result view - the
ENTERbinding in the TUI's search result view to recursively toggle all folds of the current node
Changed
- when using the TUI you may now use the
:show <label>command to jump to the specified label (#126,!116) - the
searchcommand now reports its progress live (!117)
Fixed
- unblocked the vertical scrollbar of the TUI's list view from the scroll offset
4.3.1 - 2023-11-12
Pypi: https://pypi.org/project/cobib/4.3.1/
Breaking Change
Note, that the introduction of the detailed author information parsing in v4.3.0
resulted in possible breaking of a custom config.database.format.label_default
setup. This bugfix release is meant to emphasize this breaking change and
updates the documented example in the example configuration file. For the sake
of verbosity, here is the change applied to the example:
- old:
"{unidecode(author.split(' and ')[0].split()[-1])}{year}" - new:
"{unidecode(author[0].last)}{year}"
4.3.0 - 2023-11-12
Pypi: https://pypi.org/project/cobib/4.3.0/
Prelude
Detailed Authors
coBib now has the ability to store more detailed author information (see #92 and
!88). This means, that the author field of an entry is analyzed in more detail
and coBib will separate out the first and last names as well as name pre- and
suffixes. The new setting config.database.format.author_format determines,
whether this detailed information is kept directly in the database (the
AuthorFormat.YAML setting; the new default) or is only constructed at
runtime and the author field is still simply saved in BibLaTeX form
(AuthorFormat.BIBLATEX).
Note, that the YAML format also implies, that Unicode characters are allowed
and will not be encoded in LaTeX form. This has an effect on how you may need
to format your searches. See also #130 for some more insights on this.
If you have company names or any author name which you want to have treated
verbatim, you can simply wrap it in curly braces (e.g. {My Company}).
Refer to the online documentation of cobib.database.Author and the above
setting for more details.
Wiki
coBib now has a Wiki where we can gather useful configuration resources and other details which may not make it into the full documentation.
For example, if you are interested in the tracking more metadata of your database (as suggested in #123), be sure to check out this wiki page!
Added
- the
-fshort-hand alias for the--fieldargument of theopencommand - the
opened_entriesattribute of theOpenCommand(which is accessible during thePostOpenCommandhook) - the new
gitcommand to simplify running git operations on the database (#124) - new bindings for
Home,End,PageUp, andPageDownin the TUI - (DEV) added a new
DEPRECATEDlogging level which has value 45 - Python 3.12 is now officially tested and supported
- the
config.commands.show.encode_latexsetting - the
encode_latexattribute to theBibtexParser - the
config.database.format.verbatim_fieldssetting - the
config.database.format.author_formatsetting. The new default behavior is to store detailed author information in YAML form. - the
encode_latexkeyword-argument to theEntry.stringifymethod - the
Entry.formattedmethod. This replaces theEntry.escape_special_charsmethod.
Changed
- an error will be logged when a file is not found during the
opencommand - the following commands are now treated specially when run via the
:prompt of the TUI:init: will log an errorgit: will log an errorshow: will log a warning
Deprecated
- The
LabelSuffix.CAPTIALvalue because it was misspelled. Please useLabelSuffix.CAPITALinstead.
Fixed
- non-asynchronous commands triggered via the
:prompt of the TUI will no longer break it (#125) - ensure UTF-8 encoding is used for downloaded data (this fixes many odd encounters w.r.t. special characters)
- the spelling of the
LabelSuffix.CAPITALvalue (it used to be spelledLabelSuffix.CAPTIAL)
Removed
- the
Entry.escape_special_charsmethod. UseEntry.formattedinstead.
4.2.0 - 2023-08-08
Pypi: https://pypi.org/project/cobib/4.2.0/
Added
- added the
config.tui.scroll_offsetsetting - added the
--fieldcommand line option to theopencommand - (DEV) added a new
HINTlogging level which has value 35 and thus allows to provide information to the user with a higher priority thanWARNING - added the new
config.tui.preset_filters(#114)- preset filters can be selected from the TUI via the
pkey binding - the first 9 filters can be selected directly by pressing the respective number
- pressing
0resets any applied filter
- preset filters can be selected from the TUI via the
- implemented special tags (#63,!83)
- adds new builtin tags which will trigger special highlights of entries:
new,high,medium,low - adds the new
config.themesettings section for configuring these settings - you can also add more special tags via
config.theme.tags.user_tags
- adds new builtin tags which will trigger special highlights of entries:
- added the
--skip-filescommand line option to thesearchcommand
Changed
- unicode symbols in entry labels will now be replaced with ascii ones (#119,#120)
- this is configured via the
config.database.format.default_labelsetting, so if you are using a custom value for this, be sure to update your config to make use of this feature
- this is configured via the
- some user-visible logging messages around label disambiguation have been added (see also #121)
- a warning has been added when the YAML parser encounters identical labels (which normally should not occur in the database but if it does, coBib does not really know how to resolve this)
- DOI redirect links are now followed recursively (up to 3 times), improving PDF download link detection in the process (#97)
Deprecated
- the
config.commands.search.highlightssection is deprecated in favor ofconfig.theme.search
Fixed
- retain scroll position in the TUI's list view
4.1.0 - 2023-06-11
Pypi: https://pypi.org/project/cobib/4.1.0/
Added
- added the following settings which specify whether or not to preserve
associated files during the respective commands being run:
config.commands.delete.preserve_filesconfig.commands.edit.preserve_filesconfig.commands.modify.preserve_files
- added a confirmation prompt before deleting an entry (#110)
- this prompt can be disabled by setting
config.commands.delete.confirmtoFalse
- this prompt can be disabled by setting
- added the
--no-ignore-case(-Ifor short) command line options to thelistandsearchcommand (#116) - added the
--no-preserve-filescommand line options to thedelete,editandmodifycommand (#116) - added the
config.commands.search.contextsetting which configures the default number of context lines to be provided for search query matches - added more options to configure the automatic download behavior:
- the new
config.commands.add.skip_downloadsetting - the new
--force-downloadoption of theaddcommand - the new
config.commands.import_.skip_downloadsetting - the new
--force-downloadoption of theimportcommand
- the new
- the user is asked for confirmation when quitting the TUI (!71)
Changed
- refactored the TUI by leveraging textual's
Screenconcept (#111,!71)- this means the TUI will look slightly different but no real functional change has occurred
- the view of an
Entrycan now be scrolled when the output exceeds the available space
- switched from the
BeautifulSoupHTML parser tolxml- this is supposed to give more accurate results but adds an extra dependency
Deprecated
- The following shell helpers are no longer used with the zsh completion being
removed. Thus, these methods will be removed in the future:
cobib _list_commandscobib _list_filterscobib _list_labels- If you see warnings because of this while you are using the CLI, you
probably still have the (now removed) zsh completion script installed. You
should remove the
_cobibfile which will be located in one of the directories listed in your$FPATHenvironment variable.
Fixed
- the proper pre-population of the TUI prompt during the sorting action (#117)
- preserves the value of
config.commands.list_.default_columnsand properly removes a field if it is no longer sorted by in the TUI (#117) - properly updates the list of entries in the TUI after changing the database contents;
for example via
add(#113) ordelete(#113) oredit(#118) - an issue where file-accessing operations performed on a newly added entry within the same TUI session would fail because the path would not be iterated correctly
- the live updating of the download progress bar inside the TUI (#112)
Removed
- the crude and very slow zsh completion script
4.0.0 - 2023-05-20
Pypi: https://pypi.org/project/cobib/4.0.0/
Breaking Changes
- Configuration settings can no longer be set by item access and instead must
use attribute syntax. For example you need to change:
config["database"]["git"] = True
toconfig.database.git = True
- the
config.commands.listsection had to be renamed toconfig.commands.list_ - the
config.tuisection has been entirely removed
- the
- The
cobib.commands.listmodule was moved tocobib.commands.list_. - The function signature of all command- and importer-related events has changed! For more details please refer to the online documentation.
Added
- Python 3.11 is now officially tested and supported
- Full rewrite of all commands to use
richfor a nicer CLI (#78,!51) - Full rewrite of the TUI based on
textual(#78,!51) - the
--disambiguationargument of theaddcommand (#99,!58) - the
--ignore-caseargument of thelistcommand (#105)- this also comes with the new
config.commands.list_.ignore_casesetting
- this also comes with the new
- the
searchcommand now accepts multiple query strings at once which will be searched over independently (#106)
Changed
- the new default value of
config.parsers.yaml.use_c_lib_yamlis nowTrueas announced in version 3.4.0 - refactored the entire config as a dataclass (!63)
- this implies that settings can only be set via attributes
- but as a benefit the maintainability and documentation have improved significantly
- The function signature of all command-related events has changed! Please refer to the online documentation for more details. (!63)
- The function signature of all importer-related events has changed! Please refer to the online documentation for more details. (!66)
- the API of the
cobib.commandsandcobib.importersmodule has been improved (!64)- this should not have any end-user facing effects
- the
cobib.commands.listmodule was moved tocobib.commands.list_
Deprecated
- the
--updateargument of theaddcommand is deprecated in favor of--disambiguation update - the
--skip-existingargument of theaddcommand is deprecated in favor of--disambiguation keep
Fixed
- the detection whether an entry already exists broke when label disambiguation was added in 3.3.0
and is now fixed by means of an interactive prompt during the
addcommand
Removed
- the warning triggered upon setting
config.database.format.monthwhich got removed in 3.1.0 - Python 3.7 is no longer supported
3.5.5 - 2023-04-11
Pypi: https://pypi.org/project/cobib/3.5.5/
Fixed
- opening of non-list type fields (#100)
3.5.4 - 2022-12-26
Pypi: https://pypi.org/project/cobib/3.5.4/
Fixed
- missing files encountered during searching will log warnings gracefully instead of harshly
- handle newline characters in the TUI (#98)
3.5.3 - 2022-11-16
Pypi: https://pypi.org/project/cobib/3.5.3/
Fixed
- incorrect author concatenation in ISBN Parser
- using the disambiguated label for the names of downloaded files (#96)
3.5.2 - 2022-05-22
Pypi: https://pypi.org/project/cobib/3.5.2/
Fixed
- run TUI on BSD platforms (!52)
3.5.1 - 2022-04-25
Pypi: https://pypi.org/project/cobib/3.5.1/
Fixed
- safely check cache existence before attempting to write (#94)
3.5.0 - 2022-01-13
Pypi: https://pypi.org/project/cobib/3.5.0/
News: coBib v4.0 will come with a new UI!
The plan is to switch to rich and textual instead of the current curses TUI. This will open up some great possibilities for a much more modern UI.
However, this change will require some major refactoring including breaking changes of the API and some of the user configuration options. It will also be a rather drastic change in style. Thus, I will attempt to support v3.5 with bugfix releases until 1.1.2023
It will likely take a few months until v4.0 gets released but I am starting development on it now. You can follow the progress here: https://gitlab.com/cobib/cobib/-/issues/78
Added
- the configuration loading can be disabled via the environment variable
COBIB_CONFIG- values which disable the loading entirely are:
"", 0, f, false, nil, none - you can also specify a custom path to a configuration file in this variable
- values which disable the loading entirely are:
Removed
- the
INI-style configuration got fully removed (as deprecated in 3.0.0 - 2021-04-10)
3.4.0 - 2021-12-01
Pypi: https://pypi.org/project/cobib/3.4.0/
- coBib now requires the
requests-oauthlibpackage- technically this is an optional dependency for now, but it will likely become a requirement soon
Added
- the new
config.parsers.yaml.use_c_lib_yamlsetting which significantly improves loading performance- this setting will change its default value to
Truein version 4.0.0
- this setting will change its default value to
- the
Importcommand (#86,!49):- can be used to import libraries from other bibliography managers (see next bullet)
- see
cobib import --helpfor more information
- the
cobib.importersmodule:- provides importer classes for various other bibliography managers
- these get registered at runtime under the
cobib importcommand - this release provides the
--zoteroimporter - see
cobib import --zotero -- --helpfor more information
- the
config.logging.cacheoption, specifying the location of a simple json cache - the
config.commands.open.fieldsoption, specifying the names of the data fields which are checked for openable URLs (#89)
Changed
- the
PreFileDownloadevent now takes an additional argument:headers: Optional[Dict[str, str]]
Fixed
- downloaded file names will not duplicate the
.pdfsuffix
3.3.2 - 2021-11-17
Pypi: https://pypi.org/project/cobib/3.3.2/
Fixed
- re-enable the terminal keypad during resize event
- this ensures proper arrow-key behavior after returning from an external editor
- clear screen after closing TUI to remove all screen artifacts
Security
- remove warning when using the DOI parser because the upstream issue related to #91 got fixed
3.3.1 - 2021-10-19
Pypi: https://pypi.org/project/cobib/3.3.1/
Fixed
- erroneous label disambiguation of Entry labels which already conform with
config.database.format.default_label_format(#87,!47) - do not add empty file list when unifying database
Security
- log warning when using the DOI parser because of (#91)
3.3.0 - 2021-10-04
Pypi: https://pypi.org/project/cobib/3.3.0/
Added
- print Changelog since the last run version (cached in
config.logging.version) (#82) - the
AddCommandnow has a new--updateoption (#79,!41) - the
_lint_databaseutility now takes the--formatargument, which automatically resolves all lint messages (#81,!42) - the new
URLParser(available viacobib add --url <URL>(#84,!44)- it attempts importing from a plain URL
- simultaneously the arXiv, DOI, and ISBN parsers now also support URL containing a matching identifier directly
- the
--dryargument of theModifyCommandto prevent errors during large bulk modifications
- the
config.database.format.label_defaultandconfig.database.format.label_suffixoptions (#85,!45)- labels will automatically be formatted according to the default option
- if labels conflict with existing ones, the suffix option will be used for disambiguation
- the
AddCommandhas a new--skip-existingoption which disables automatic label disambiguation - use
cobib _unify_labels --applyto unify all labels in your database
- subscribable events (#71,!46)
- allows registering of hooks to be executed in certain situation
- more information is provided at the online documentation
Changed
- when an unknown variable is encountered in the modification of the
modifycommand it falls back to an empty string rather than the name of the attempted variable
Removed
- the
-soption of theAddCommandis no longer available. You need to write out--skip-download - the
IDfilter argument on thelistcommand (deprecated in v3.2.0 in favor of thelabelfilter)
3.2.1 - 2021-07-15
Pypi: https://pypi.org/project/cobib/3.2.1/
Fixed
- when adding multiple entries at once, continue adding after encountering a single duplicate (#83)
3.2.0 - 2021-06-26
Pypi: https://pypi.org/project/cobib/3.2.0/
Added
- basic auto-downloading of PDF files for arXiv IDs and configured DOIs (#25,!35,!39):
- the default download location can be configured via
config.utils.file_downloader.default_location - on a per addition basis, this default can be overwritten via the
--pathkeyword option of theAddCommand - if a file already exists in this location of the file system, the download will be skipped
- download for DOI entries must configure URL patterns in
config.utils.file_downloader.url_map - on a per addition basis, the entire automatic download can be skipped with
--skip-download
- the default download location can be configured via
- automatic journal abbreviations (#62,!36):
- users can configure a list of journal abbreviations via
config.utils.journal_abbreviations - if present, coBib will store the journal in its elongated form
- a user can then automatically convert to abbreviated forms during exporting (see the new
--abbreviateand--dotlessarguments)
- users can configure a list of journal abbreviations via
- Tentative Windows support by disabling the TUI
- a
--preserve-filesargument was added to the following commands. Unless it is given, these will delete/rename associated files of affected entries:DeleteCommandEditCommandModifyCommand
Changed
- the
modificationsof aModifyCommandget interpreted as f-strings (#77,!37):- available variables are the entry's label and data fields
- any
ListCommandfilter gets interpreted as a regex pattern (#76)
Deprecated
- the
IDfilter argument was fully replaced bylabel, unifying the CLI API. Support will be dropped in v3.3.0
Fixed
- Removed (most) duplication of log messages
3.1.1 - 2021-05-25
Pypi: https://pypi.org/project/cobib/3.1.1/
Fixed
- Pypi package metadata
3.1.0 - 2021-05-24
Pypi: https://pypi.org/project/cobib/3.1.0/
Added
- the YAML format of the database has been extended to support the following: (#55)
- numbers can be stored as integers
- the
IDfield is no longer required and will be properly inferred from the label - the following fields can be stored as lists:
file,tags,url
- three new configuration options were added to complement the above list format options:
config.database.stringify.list_separator.fileconfig.database.stringify.list_separator.tagsconfig.database.stringify.list_separator.url
- the
_lint_databaseshell utility has been added which can be used to detect possible improvements for the database - the append-mode of the
ModifyCommandwas implemented (#60):- specifying
-a/--addwill add the modification value to the field of the entries rather than overwrite it - this can be used for string or list concatenation and even number addition on numeric fields
- specifying
Changed
- use file paths relative to user-home (achieved by replacing
os.pathwithpathlib) (#69) - the shell helper
_list_tagshas been renamed to_list_labels - (DEV): the
loggingandzsh_helpermodules have been relocated to thecobib.utilspackage +symbols will no longer be stripped from tags (this was a left-over artifact from pre-v1.0.0)
Deprecated
- the
config.database.format.monthsetting is deprecated in favor of proper three-letter code encoding to support common citation style macros (!34)
Fixed
- renaming the label during the
editcommand does not leave the previous label entry behind:- a followup also ensured that renaming entries happens in-place (#75)
- the sorting of the
listcommand
3.0.0 - 2021-04-10
Pypi: https://pypi.org/project/cobib/3.0.0/
- From now on,
coBibis the official way of spelling!
Added
- coBib's documentation is now generated by
pdocand hosted at https://cobib.gitlab.io/cobib/cobib.html - (DEV): the
cobib.database.Database-Singleton has been added to centrally manage the bibliographic runtime data (!28) - the new option
config.database.format.suppress_latex_warnings - the new option
config.commands.edit.editorwhich takes precedence over the$EDITORvariable
Changed
- the
INI-style configuration is replaced with aPython-based configuration (#54,!25)- for guidance on how to migrate an existing configuration please read https://mrossinek.gitlab.io/programming/cobibs-new-configuration/
- (DEV):
cobib.parser.Entryhas been moved tocobib.database.Entry - the
cobib.parsersmodule has been extracted (prep for #49, !28) - the filenames of the associated files are preserved when exporting to a Zip file
- when trying to add an entry with an existing label, the database is not written to and a warning is raised early
- month conversion and special character escaping are only done upon saving entries to the database
- the path to the default logfile can now be configured via
config.logging.logfileand defaults to~/.cache/cobib/cobib.log
Deprecated
- the
INI-style configuration is deprecated- new configuration options will not be added to this style
- only bugs which fully break usability will be fixed with regards to this configuration style
- legacy-support will be fully removed on 1.1.2022
Fixed
- the ZSH helper utilities now respect the
-c,-l, and-vcommand line options - the
RedoCommandshould only revert a previouslyUndoCommandoperation (#65) - the
SearchCommandgot some contexts improvements and correctly splits grep results - unwrapping does not crash the TUI if the cursor was multiple lines below the new buffer height
- line continuation guides are not swallowed by current line highlighting
- ensure the TUI's top line does not become negative
- the TUI's handler for resizing events
JSONDecodeErrors thrown by theISBNParserare caught and handled gracefully
Removed
- the functions
read_database()andwrite_database()are no longer available (!28)
2.6.1 - 2021-02-05
Pypi: https://pypi.org/project/cobib/2.6.1/
Note: 2.6.1 was not released from the master-branch, which resulted in a non-linear development.
Changed
init --gitwill not initialize a repository unless git has configured both,nameandemail
Fixed
- TUI no longer crashes when aborting to quit (#64)
2.6.0 - 2020-12-31
Pypi: https://pypi.org/project/cobib/2.6.0/
Added
- Git integration (#44, !20):
- will automatically track any changes done to the database file with git
- must be enabled by setting the
DATABASE/gitoption toTrueand runningcobib init --git - Note, that you must have at least set a
nameandemailin the git config!
- Undo/Redo commands to operate on git history of the database (#59,!23)
- for obvious reasons these commands require the Git integration (see above) to be enabled
- the
Promptcommand inside of the TUI:- allows executing arbitrary CoBib CLI commands
- the default key binding is
:
- the
Modifycommand: (#60,!24)- allows bulk modification of multiple entries in a
<field>:<value>format - for now, this will always overwrite the field with the new value!
- an extension to appending values is planned for a later release
- the set of entries to be modified can be specified just like with the
exportcommand throughlist-command filters or manual selection (by setting the--selectionflag)
- allows bulk modification of multiple entries in a
Changed
- the viewport history is preserved correctly (#21,!22)
- this allows performing a search while showing an entry and reverts back to the correct view after quitting the search
- the changes mainly involved refactoring of the
cobib/tuimodule
- the positional argument of the
modifyandsearchhas been renamed internally fromlist_argtofilter- this should not have any visible effect to an end-user but may be relevant to developers
Fixed
- gracefully handle multiple terminal sizing issues with regards to popups (#58)
- catch messages on
stdoutduring deletion from TUI - added missing help strings to the TUI help menu
Removed
- The
--forceargument to theinitcommand has now been removed (after being deprecated in v2.5.0).
2.5.0 - 2020-12-08
Pypi: https://pypi.org/project/cobib/2.5.0/
Added
- support for multiple associated files (#42,!19)
- interactive menu when opening an entry with multiple associated files (!19)
Deprecated
- The
--forceargument to theinitcommand has been deprecated. I don't think there is any benefit to providing the user the option to nuke their database file from the CLI. Instead, they can simply edit the file manually.
Fixed
- always store years as strings to be compatible with bibtexparser
- handle invalid arXiv or DOI IDs gracefully (#57)
2.4.1 - 2020-11-01
Pypi: https://pypi.org/project/cobib/2.4.1/
Fixed
- ISBN parser was missing the ENTRYTYPE and did not use strings for number fields
- the ISBN parser can now handle empty entries (#53)
- the TUI will not crash on stdout/stderr messages exceeding the window width
- the TUI respects quoted strings in the prompt handler (#52)
2.4.0 - 2020-10-14
Pypi: https://pypi.org/project/cobib/2.4.0/
Added
- the
FORMAT/default_entry_typeoption used for manual entry addition - a manual insertion mode available through
edit -a new_labelandadd -l new_label - a ISBN-based parser for adding new entries (#45)
- the TUI-based
selectcommand (and corresponding settings) (#8,!18) - the
--selectionargument for theexportcommand (!18)
Changed
- TUI color highlighting is now prioritized (!17)
Fixed
- support URLs in file field during
opencommand (#47) - the TUI no longer crashes when encountering long prompt inputs (#48)
- the
editcommand can handle labels which start with common substrings (#46) - support multiple ANSI colors on a single line (#50)
2.3.4 - 2020-09-14
Pypi: https://pypi.org/project/cobib/2.3.4/
Fixed
- another AUR package installation error
2.3.3 - 2020-09-14
Pypi: https://pypi.org/project/cobib/2.3.3/
Fixed
- AUR package installation error
2.3.2 - 2020-09-10
Pypi: https://pypi.org/project/cobib/2.3.2/
Added
- option to default to case-insensitive searching (
DATABASE/search_ignore_case)
Changed
- clearing the prompt, aborts the command execution
Fixed
- search command correctly handles missing arguments in TUI (#43)
2.3.1 - 2020-09-10
Pypi: https://pypi.org/project/cobib/2.3.1/
Fixed
- faulty Pypi package
2.3.0 - 2020-09-10
Pypi: https://pypi.org/project/cobib/2.3.0/
Added
- Logging functionality has been added. The verbosity level can be controlled via
-v(INFO) and-vv(DEBUG). As soon as the TUI starts, all logging output is redirected to/tmp/cobib.log. - Command line argument
-lor--logfilecan be used to specify the output path of the log. This will overwrite the/tmp/cobib.loglocation. - the
TUI/scroll_offsetsetting was added. It defaults to3and behaves similar to Vim'sscrolloffsetting. - Configuration validation has been added. This extends the logging functionality to support more runtime debug information.
- popup window support: stdout and stderr messages are presented in a popup similarly to the help window
Changed
-vcommand line argument now refers to--verboserather than--version- Performance of the
addcommand has been improved by not refreshing the database when outside of the TUI.
Fixed
- bug when resizing causes the window width to become greater than the buffer width (#39)
- do not escape special characters in labels (#40)
- avoid special character encoding in file paths
2.2.2 - 2020-08-13
Pypi: https://pypi.org/project/cobib/2.2.2/
Fixed
- current line highlight if viewport is wider than buffer was not correctly reset
- the
ignore_non_standard_typessetting had no effect
2.2.1 - 2020-08-10
Pypi: https://pypi.org/project/cobib/2.2.1/
Changed
- when wrapping the TUI lines, indent until after the label column (#26)
- renamed
default.initoexample.iniin the documentation folder
Fixed
- current line highlight after viewport width was not correctly reset
- correctly convert boolean configuration options (#34)
- fix crash of TUI in wrap command when viewport is empty (#37)
- default configuration settings are managed centrally and consistently (#35)
2.2.0 - 2020-07-12
Pypi: https://pypi.org/project/cobib/2.2.0/
Added
- allow configuring the program used to
openassociated files - prompt user before actually quitting CoBib (#33)
- implements the Search command (#7, !12)
Fixed
- the default value of the
opencommand was not set correctly
2.1.0 - 2020-06-14
Pypi: https://pypi.org/project/cobib/2.1.0/
Added
- added half- and full-page scrolling (#22)
Changed
- importing from
bibtexdata defaults to not ignored non-standard entry types (#28) - suppress LaTex encoding warnings except when adding entries (#29)
SearchandSelectprint warnings to the prompt while not implemented
Fixed
initcommand ensures directory of database file exists- remove window artifacts after
helpmenu is closed (#20) - configuration file detection was missing a user home expansion (#31)
2.0.0 - 2020-06-06
Pypi: https://pypi.org/project/cobib/2.0.0/
Fixed
- respect sort order reversing and filter
XORing from the TUI (#18) editcommand on Mac OS (#19)
Changed
- made
initcommand safe against database overwriting - TUI: list entries in reverse order by default (config: TUI/reverse_order)
2.0.0b4 - 2020-05-16
Pypi: https://pypi.org/project/cobib/2.0.0b4/
Fixed
- reset viewport position when updating buffer
2.0.0b3 - 2020-05-16
Pypi: https://pypi.org/project/cobib/2.0.0b3/
Fixed
- properly assert valid current line number
2.0.0b2 - 2020-05-16
Pypi: https://pypi.org/project/cobib/2.0.0b2/
Fixed
- fixed TUI startup
2.0.0b1 - 2020-05-16
Warning: do NOT use! The TUI is broken in this release!
Pypi: https://pypi.org/project/cobib/2.0.0b1/
Fixed
- TUI does not crash when opening an entry with no associated file
- correctly reset current line positions after filtering and editing
2.0.0b0 - 2020-04-28
Pypi: https://pypi.org/project/cobib/2.0.0b0/
Changed
- internal: refactored the config into a class
- centralized the database handling to improve performance (#12,!9)
Fixed
- the
Showcommand does not break after scrolling the viewport (#13)
2.0.0a2 - 2020-04-27
Pypi: https://pypi.org/project/cobib/2.0.0a2/
Added
- user configuration options for:
- TUI colors
- TUI key bindings
- TUI default list arguments
- help window highlighting
Changed
- sorting and filtering commands remain persistent when updating the list view
2.0.0a1 - 2020-04-23
Pypi: https://pypi.org/project/cobib/2.0.0a1/
Added
- Added a basic curses-based TUI (#5,!7)
Changed
- internal: refactored commands into separate module
1.1.0 - 2020-03-28
Pypi: https://pypi.org/project/cobib/1.1.0/
Added
- add
FORMAT.monthconfiguration option to configure the default type for month fields (defaults toint) (#3,!4) - escape special LaTeX characters (#2,!5)
Fixed
listno longer breaks with aKeyErrorwhen a queried field does not exist in any bibliography entry (!2)--labelcan now correctly overwrite the ID (#4,!3)
Changed
set_config()and globalCONFIGexported to separate module
1.0.2 - 2020-01-12
Pypi: https://pypi.org/project/cobib/1.0.2/
Note: this removal is not seen as a MINOR version bump because this is essentially a long out-standing bug fix
Removed/Fixed
- doi extraction from pdf files (476efc4f)
- also removes the ability to add entries directly via pdf files
1.0.1 - 2020-01-12
Pypi: https://pypi.org/project/cobib/1.0.1/
Changed
- metadata for pypi
1.0.0 - 2020-01-12
First MAJOR release. Also available via Pypi: https://pypi.org/project/cobib/1.0.0/
The project was renamed from CReMa to CoBib
Added
- allow sorting the list output (2a5a94f1)
- crude and slow (!!!) zsh completion (9f28f441)
- support Darwin's
opencommand
Changed
- suppress list output when exporting
- add used tags to columns when listing
- sort YAML database entries by keys (d2af42d2)
Fixed
- fixed arxiv parser (7ce3726f)
0.2 - 2019-09-02
Note: this release was not marked MAJOR because this is still a WIP and early alpha release.
Added
- complete rewrite to use a plain-text
yamldatabase instead ofsqlite3!1
Removed
sqlite3database
0.1 - 2019-04-29
Added
- initial version with a basic
sqlite3-based database
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cobib-6.0.1.tar.gz.
File metadata
- Download URL: cobib-6.0.1.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9be5b29f87eaaa20ec9a3669d5884a683fa066021bf077af84e8a09f932298d4
|
|
| MD5 |
0117cf911d1ae601f8c07a3153637b75
|
|
| BLAKE2b-256 |
3a6cb9a4d9dcc847e80d7949a84490fd56bf118f3e94aeb46ebd9e21ddf43ddb
|
File details
Details for the file cobib-6.0.1-py3-none-any.whl.
File metadata
- Download URL: cobib-6.0.1-py3-none-any.whl
- Upload date:
- Size: 260.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a0aa97882090310a4ef361a5ffd648749fec7696816da90aacc97ba3c95cc96
|
|
| MD5 |
99b44a3bd53fded054b8274328279efa
|
|
| BLAKE2b-256 |
52533eacca70d549f8cf5c01a600fd2a785b773a671dc3eb42665a3804f3a8d0
|