[Development started] - 02-02-2023
[0.1.1] - 02-24-2023
-
The initial version released.
-
The gem can create empty
.apkg
files that import into Anki. -
SQL statements can be executed against the
collection.anki21
database before the zip file is created.
[0.2.0] - 03-05-2023
-
AnkiPackage#zip_and_close
renamed toAnkiPackage#zip
. -
Decks and note types can be accessed with
Collection#find_deck_by
andCollection#find_note_type_by
. -
Note objects can be created and updated, and then saved to the
collection.anki21
database. -
This also populates corresponding records in the
cards
table.
[0.3.0] - 03-26-2023
-
AnkiPackage::new
yields the collection object to the block instead of the Anki package object. -
AnkiPackage::open
has been developed to a point that it is useable. -
An “opened” Anki package now has its contents copied into the temporary
collection.anki21
database. -
AnkiPackage#execute
was removed. -
AnkiPackage#prepare
was added. Any SQL statements executed directly againstcollection.anki21
must now be prepared statements. -
Custom decks (and nested decks/subdecks) and custom note types can be created and updated, and then saved to the
collection.anki21
database. -
Notes can be accessed with
Collection#find_note_by
. -
Note#save
now updates a note (and its corresponding cards) if it was already in thecollection.anki21
database. -
Note::new
does not accept acloze
argument anymore; this attribute can be changed after instantiation with thecloze=
setter. -
Deck
has adeck_options_group
attribute instead ofdeck_options_group_id
-
#inspect
added toDeck
-
Deck options groups can be accessed with
Collection#find_deck_options_group_by
-
Multiple classes with
last_modified_time
andcreation_timestamp
attributes had these renamed tolast_modified_timestamp
andcreated_at_timestamp
. -
More helpful error messages in various places (e.g. “The package name must be a string without spaces.”).
-
Bug fixes that may have affected previous version:
-
Instantiating a note type from an existing Anki package no longer duplicates the note type when it is saved.
-
Note types are not instantiated/saved with an invalid
req
value.-
In fixing this bug, other issues with
tags
andvers
were introduced and then fixed. -
It was also noticed that the default note types with “Basic” in the name should not have
tags
andvers
so this was changed too.
-
-
API documentation changed from using RDoc to SDoc with the Rails template.
-
RSpec test suite was refactored to improve speed: 4 minutes -> 1.5 minutes.
[0.3.1] - 04-29-2023
-
Deck.new
was saving the deck to thecollection.anki21
database. Now it will only instantiate it and#save
must be called to save it. -
Helper
modules moved into theHelpers
module namespace. -
Bug fix addressing using the approximate milliseconds since the epoch as the primary key id causing the uniqueness constraint to fail when creating a lot of notes.
[0.3.2] - 05-20-2023
-
The private
Note
methodglobally_unique_id
has been moved toNoteGuidHelper
and included into note. -
The
guid
attribute also now has a public setter.
[0.4] - 07-08-2023
-
AnkiPackage.new
andAnkiPackage.open
have been removed and replaced withAnkiPackage.create
andAnkiPackage.update
. -
AnkiPackage.update
is different fromAnkiPackage.open
in that it does not create a new Anki package with a timestamp. It effectively updates the original Anki package file as long as no error is thrown. -
Anki21Database
is yielded to the block of the above methods instead ofCollection
. -
Responsibilites of
Collection
have been reorganized toAnki21Database
. -
The
guid
attribute of notes ic computed in a different way that allows a larger number of possible values. -
globally_unique_id
is now a module method rather than an included instance method.
[0.4.1] - 08-21-2023
-
Anki21Database#find_note_by
now can take the sort field value of a note as argument. -
Anki21Database#find_notes_by_exact_text_match
is a new method that returns an array of notes that have in any field text matching the argument. -
Trying to create an Anki package file with a path/name that already exists raises a more helpful error message.
-
Saving a note to the database saves the
mod
column (last modified time) to make it easier to import an updated package into Anki.