<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vgstash/src, branch next</title>
<subtitle>Manage your game collection and knock out that backlog!</subtitle>
<id>https://git.zlg.space/vgstash/atom/src?h=next</id>
<link rel='self' href='https://git.zlg.space/vgstash/atom/src?h=next'/>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/'/>
<updated>2025-07-30T03:37:57Z</updated>
<entry>
<title>The big VGStash-Web commit!</title>
<updated>2025-07-30T03:37:57Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2025-07-30T02:11:50Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=9b0bda1a13ebac7866099c325b7ab103520ea40b'/>
<id>urn:sha1:9b0bda1a13ebac7866099c325b7ab103520ea40b</id>
<content type='text'>
This commit introduces a templated HTML file to insert your username,
and a set of files that, when combined with your exported VGStash in
JSON format, can be used to display (and browse) your game collection in
your Web browser!
</content>
</entry>
<entry>
<title>Finish integrating support for p_date, et al</title>
<updated>2025-07-28T03:42:03Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2025-07-28T03:42:03Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=b86e8271edde41c8527cdadb0b32505376afb5dc'/>
<id>urn:sha1:b86e8271edde41c8527cdadb0b32505376afb5dc</id>
<content type='text'>
* Tightened up update_game() to use explicit fields
* 'unowned' and 'unbeatable' status now show as blank fields in
  list_game() output
* Results are counted and a proper message is emitted instead of
  erroring when there are no results.
* Support p_date, b_date, and c_date in the CLI
</content>
</entry>
<entry>
<title>Add support for p_date, b_date, c_date to CLI</title>
<updated>2025-01-24T15:43:37Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2025-01-24T15:38:48Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=0ba91dd3034cadfb7e80bcc4a1f64a2b67a85368'/>
<id>urn:sha1:0ba91dd3034cadfb7e80bcc4a1f64a2b67a85368</id>
<content type='text'>
The library and CLI tool both can handle the new schema v2 that includes
these columns. Please use the schema migration script in the "scripts"
directory to continue using VGStash.

The list_games function has been completely re-worked to handle
arbitrary tabular data. Raw mode has remained, but the width switch (-w)
for default table view is no longer present.

The first VIEW supporting these columns is also available in FILTERS:
the backlog_age filter, which will show you the amount of time games
with a purchase date value have been sitting in your collection
unbeaten.
</content>
</entry>
<entry>
<title>vgstash_cli: 'export' with no filename prints to stdout</title>
<updated>2021-10-17T01:33:48Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2021-10-17T01:33:48Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=269aecb4478c4ed6e15e1b155f259d978b178d2e'/>
<id>urn:sha1:269aecb4478c4ed6e15e1b155f259d978b178d2e</id>
<content type='text'>
ZLG-Bug: 6
</content>
</entry>
<entry>
<title>vgstash: Support 'member' ownership status</title>
<updated>2021-10-17T01:26:14Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2021-10-17T01:26:14Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=e23f6da1fb50b28f63283852dc89046b468dd644'/>
<id>urn:sha1:e23f6da1fb50b28f63283852dc89046b468dd644</id>
<content type='text'>
Games marked as a 'member' are members of a collection or bundle of
*other* games.

For example, Castlevania Advance Collection is available for PS4,
Switch, and Xbox X, but the games contained within it are on GBA and
SNES. This means the original games should be marked 'member' on
ownership (and their progress tracked) while the collection entry should
have its ownership tracked, but be marked unbeatable.

As such, the 'owned' filter has been updated to exclude 'member' games,
and there is a new 'members' filter to target *only* member games.
</content>
</entry>
<entry>
<title>vgstash_cli: Show what happens to note data</title>
<updated>2020-08-02T23:57:26Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2020-08-02T23:57:26Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=bc6fd1e41c3e362c42414b4f582f5ebd2613a8a4'/>
<id>urn:sha1:bc6fd1e41c3e362c42414b4f582f5ebd2613a8a4</id>
<content type='text'>
The 'notes -e' command used to always tell the user that the notes had
been updated. This was incorrect.

Now 'notes -e' will detect three states:

* The note has been changed
* The note has not been changed
* The editor can't be loaded (set via EDITOR)

ZLG-Bug: 3
</content>
</entry>
<entry>
<title>Avoid a backtrace when editing notes on an invalid game</title>
<updated>2020-03-03T05:32:45Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2020-03-03T05:32:45Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=6342e1479d6390a3101e715ff67c4983753cc7db'/>
<id>urn:sha1:6342e1479d6390a3101e715ff67c4983753cc7db</id>
<content type='text'>
ZLG-Bug: 4
</content>
</entry>
<entry>
<title>Avoid a backtrace when updating an invalid game</title>
<updated>2020-03-03T05:09:00Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2020-03-03T05:09:00Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=284b5946c61cc39d8aa880554ce5ba363285c5fc'/>
<id>urn:sha1:284b5946c61cc39d8aa880554ce5ba363285c5fc</id>
<content type='text'>
ZLG-Bug: 2
</content>
</entry>
<entry>
<title>Release version 0.3 beta 4</title>
<updated>2019-05-01T03:34:15Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2019-05-01T03:34:15Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=cee2897b1e5ace4a697d40450d87d53d0ef3a853'/>
<id>urn:sha1:cee2897b1e5ace4a697d40450d87d53d0ef3a853</id>
<content type='text'>
This release brings JSON import and export support.
</content>
</entry>
<entry>
<title>vgstash: Add "notes" filter to schema</title>
<updated>2019-01-03T13:40:16Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2019-01-03T13:40:16Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=6c59e9df6dcbf3cc2daaac9b40cdfe8a6859c690'/>
<id>urn:sha1:6c59e9df6dcbf3cc2daaac9b40cdfe8a6859c690</id>
<content type='text'>
The notes filter will return every game whose notes field is non-empty.
Useful for client-building and/or automation.

Run `vgstash init` after upgrading to recreate any missing (or new)
filters.
</content>
</entry>
<entry>
<title>vgstash: let backlog filter ignore unbeatable games</title>
<updated>2018-10-22T09:47:47Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-22T09:47:47Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=dc2797941701af6f36482203355b3fbd24777143'/>
<id>urn:sha1:dc2797941701af6f36482203355b3fbd24777143</id>
<content type='text'>
To migrate, run these two commands:

    sqlite3 /path/to/vgstash.db 'DROP VIEW backlog;'
    vgstash init
</content>
</entry>
<entry>
<title>vgstash.DB.__init__: fix error output formatting</title>
<updated>2018-10-19T04:14:38Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-19T04:14:38Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=93f42bbcbf2c5a17f92b3d8f0b1ec9a767fd210b'/>
<id>urn:sha1:93f42bbcbf2c5a17f92b3d8f0b1ec9a767fd210b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cli: show msg if game to be deleted is not in DB</title>
<updated>2018-10-19T04:02:53Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-19T04:02:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=69373e362637b5e89ee347c9874f5f8c4ec6a294'/>
<id>urn:sha1:69373e362637b5e89ee347c9874f5f8c4ec6a294</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cli: Tell the user when a game lacks notes</title>
<updated>2018-10-19T01:14:52Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-19T01:14:52Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=09e2c47970a02be5a7e79a67b335f274f4c2c866'/>
<id>urn:sha1:09e2c47970a02be5a7e79a67b335f274f4c2c866</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Catch when an invalid list filter is passed</title>
<updated>2018-10-18T23:36:39Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-18T23:36:39Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=3ec2a2902caaf3e70deea650425339299af5d821'/>
<id>urn:sha1:3ec2a2902caaf3e70deea650425339299af5d821</id>
<content type='text'>
Before, vgstash.DB.list_games() would default to 'allgames' and silently
hide it when a filter wasn't found. This commit ensures that the vgstash
package and CLI both indicate when an invalid filter is passed to them:

* vgstash.DB.list_games() will return False on a failure to match;
* vgstash_cli uses Click's Choice object to enforce the constraint
</content>
</entry>
<entry>
<title>cli: Add zero-game import/export messages</title>
<updated>2018-10-13T00:50:53Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-13T00:50:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=c7d09704fb911d59139aff5ad0ab4c35a2ed9493'/>
<id>urn:sha1:c7d09704fb911d59139aff5ad0ab4c35a2ed9493</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move tests and data to dedicated directory</title>
<updated>2018-10-11T04:29:08Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-11T04:29:08Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=8775fcd12876f3acc5f9b919afe1cf3be238a186'/>
<id>urn:sha1:8775fcd12876f3acc5f9b919afe1cf3be238a186</id>
<content type='text'>
Also tweaked the export command to report correctly.
</content>
</entry>
<entry>
<title>cli: Add "export" command</title>
<updated>2018-10-11T03:49:02Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-11T03:49:02Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=411e47351c996aa1d1f19dc10366ee824d091b40'/>
<id>urn:sha1:411e47351c996aa1d1f19dc10366ee824d091b40</id>
<content type='text'>
The export command is like the import command; currently supporting YAML
output, but ready to be expanded as needed.
</content>
</entry>
<entry>
<title>cli: Add "import" command</title>
<updated>2018-10-11T02:44:18Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-11T02:44:18Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=669aed9ec7261c49c49ed26c31f218e42faa491a'/>
<id>urn:sha1:669aed9ec7261c49c49ed26c31f218e42faa491a</id>
<content type='text'>
Currently the import command will only accept YAML files, but is ready
for expansion to other formats as needed.
</content>
</entry>
<entry>
<title>cli: Add "notes" command</title>
<updated>2018-10-10T06:32:23Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-10T06:32:23Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=2fad4b705166d8bd8cd9783c16856d07c470d3e0'/>
<id>urn:sha1:2fad4b705166d8bd8cd9783c16856d07c470d3e0</id>
<content type='text'>
The "notes" command will show the user what their notes for a particular
game are. The output can be piped anywhere the user wants, such as a
pager or a file.

If "notes" is passed with the "--edit" or "-e" flag, vgstash will open a
temporary file with the game's notes already inside and edit it using
the program pointed to by the EDITOR environment variable. When the
editor is closed (with a successful exit status), vgstash updates the
game's notes and exits.

The defaults for the testing environment ("cat" for non-interactive,
"vim" for interactive) may need tweaking on other operating systems.
Patches for these platforms are very welcome.
</content>
</entry>
<entry>
<title>update_game: ensure notes are also saved</title>
<updated>2018-10-10T06:30:29Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-10T06:30:29Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=bf567438a9720c18f7e0045f4b198cf143fa7053'/>
<id>urn:sha1:bf567438a9720c18f7e0045f4b198cf143fa7053</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cli: add 'update' command</title>
<updated>2018-10-09T11:33:52Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-09T11:33:52Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=ac3e84c9438ef964a08f2acf40ab58fe1c04675e'/>
<id>urn:sha1:ac3e84c9438ef964a08f2acf40ab58fe1c04675e</id>
<content type='text'>
Two helper functions were also added to the vgstash package to ease
client workflows.

This commit marks the final core function necessary to manipulate a
vgstash DB on the command line.
</content>
</entry>
<entry>
<title>cli: Add "delete" command</title>
<updated>2018-10-07T05:28:40Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-07T05:28:40Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=9da20483b8aa26a3090093212d007e6dc756b2d2'/>
<id>urn:sha1:9da20483b8aa26a3090093212d007e6dc756b2d2</id>
<content type='text'>
Unlike the old version of vgstash, the new one does not accept row IDs
as arguments for removal. Instead, it accepts two mandatory arguments:
the title of the game, and the system it's on. This is in line with the
database itself, using the title and system as primary keys.
</content>
</entry>
<entry>
<title>Remove ID field from DB</title>
<updated>2018-10-07T05:26:21Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-07T05:26:21Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=e5875bb6b73f91db5a9982e2816de649e9bc4ef6'/>
<id>urn:sha1:e5875bb6b73f91db5a9982e2816de649e9bc4ef6</id>
<content type='text'>
The sqlite database already uses a game's title and system as the
primary keys. Row IDs are redundant.
</content>
</entry>
<entry>
<title>cli: change "Status" heading to "Progress"</title>
<updated>2018-10-07T05:04:53Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-10-07T05:04:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=9de7357d758ab2253061ce7d68fb3942b52ee7a3'/>
<id>urn:sha1:9de7357d758ab2253061ce7d68fb3942b52ee7a3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cli: Add pretty printing to 'list' command</title>
<updated>2018-09-30T06:34:35Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-09-30T06:27:05Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=7288560c5678991527c7b2c2ed0d7f3979f70c67'/>
<id>urn:sha1:7288560c5678991527c7b2c2ed0d7f3979f70c67</id>
<content type='text'>
Also add the "--width" option to specify the maximum width of the table.
</content>
</entry>
<entry>
<title>cli: add '--raw' option to list command</title>
<updated>2018-09-09T02:15:48Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-09-09T02:15:48Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=b2d47d2ca978e2cd62be4cb6fe0471598427b8b7'/>
<id>urn:sha1:b2d47d2ca978e2cd62be4cb6fe0471598427b8b7</id>
<content type='text'>
Add '--raw' option to the list command, in addition to proper note
expansion. Newline characters in notes are escaped to be friendly to
scripting. This option may be shortened to '-r' at the user's
convenience.

In raw output mode, the information is formatted in plain pipe-delimited
strings, one line per row:

title|system|ownership|progress|notes

ownership and progress are printed in their numeric form, consistent
with the OWNERSHIP and PROGRESS dictionaries in the vgstash package.

An empty notes field will result in a line ending with a pipe and no
whitespace following it.
</content>
</entry>
<entry>
<title>Add remaining filters to vgstash package</title>
<updated>2018-09-09T02:07:36Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-09-09T02:07:36Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=14162a862e50c35f44370daf1f525b27f3bafc85'/>
<id>urn:sha1:14162a862e50c35f44370daf1f525b27f3bafc85</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Branch off from master with pytest, tox, click</title>
<updated>2018-09-03T09:55:21Z</updated>
<author>
<name>zlg</name>
<email>zlg@zlg.space</email>
</author>
<published>2018-09-03T09:52:57Z</published>
<link rel='alternate' type='text/html' href='https://git.zlg.space/vgstash/commit/?id=565812a92cd22d41aa6f5f85a6b451386422fb4a'/>
<id>urn:sha1:565812a92cd22d41aa6f5f85a6b451386422fb4a</id>
<content type='text'>
This commit is huge, but contains everything needed for a "proper" build
system built on pytest + tox and a CLI built with click.

For now, this branch will contain all new vgstash development activity
until it reaches feature parity with master.

The CLI is installed to pip's PATH. Only the 'init', 'add', and 'list'
commands work, with only two filters. This is pre-alpha software, and is
therefore not stable yet.
</content>
</entry>
</feed>
