-
thor rr listnow can report on all mappable rectypes, not just authorities -
Remove
thor-hollabackdependency and related code. We now rely on theat_exitblock in the base module to close database tunnel and connection as needed on any form of exit. -
Rename
thor tm runtothor tm run_plan- withoutthor-hollaback, thor starts complaining thatrunis a protected keyword -
thor batch mapcommand now outputs both CS XML and mapping report paths separately, more clearly labeling them. == 7.1.0 (2026-05-13) -
Skip tunnel when creating a db connection if
CMT.config.client.db_tunnel_skip=true -
Add
thor duplicates check_allcommand -
Fix closing of db/tunnel after each duplicate check query
-
Fix bug with passing
batch_configto collectionspace-mapper
-
Fix
thor config showerror described in #113
-
Fixed the occasional spurious duplicate file error described in #69
-
Initial record harvesting functionality. See
thor harvest -
Initial Term Manager functionality (
thor tm) -
thor tm reset_exact_term_listscommand
-
Fix for ruby/openssl bug
-
Do not hit CHIA if getting non-verbose current client config (Resolves #73)
Now requires login credentials for instances to be fetched via AWS SSM.
To upgrade:
-
System config:
-
Set the new
bastion_uservalue if you will be doing anything that needs to connect to CollectionSpace databases -
Change
aws_profilevalue fromcollectionspacemigrationtoolstocollectionspaceunless you are maintaining entry for same profile under different name in credentials file -
Change
aws_media_ingest_profilefromcs-mediatosharedunless you are maintaining entry for same profile under different name in credentials file
-
-
Client config:
-
For hosted clients: Populate new
tenant_namesetting. See README’s Per-instance setup. Deletebase_uri,username, andpasswordentries/values. Also delete the whole database config section. See sample_client_config.yml for more detail.
-
-
Write refname report for a list of authority vocabularies to CSV via
rr write listthor command. The ability to produce this is handy if your project runs into this ingest limitation/bug -
Initial work/documentation of TermManager functionality, not yet complete
-
s3_bucketis now optional in client configs, since this tool may be used in some cases to interact directly with an instance via its REST API, without use of Fast Import Bucket. -
Improve map error message when a non-duplicate file name cannot be saved because Mac’s default file system (case insensitive) does treat it as a duplicate
-
doneas an explicit batch status is removed from the application. Commands to mark batches as done are removed.batches:donewill now display all batches with batch_status = ingested. -
batches:to_ingcheckcommand renamedbatches:to_ingstat, in order to be consistent withbatches:ingstatandbatch:ingstatcommands. -
Columns in batches CSV have changed. You will be prompted to run
thor batches:fix_csvat some point, or you can run it proactively.
-
batch_statuscolumn to batches CSV -
batch_modecolumn to batches CSV (added in mapping step) -
ingest durationcalculated, shown in STDOUT, and recorded in batches CSV if ingest is complete whenbatch:ingstatis run -
Batch archiving is enabled by default
-
csid delete --csvoption now usesingest_dirif configured and only a file name is given -
Reset default client config
media_with_blob_upload_delayvalue to 500ms in accordance with the sample client config -
batches shownow shows headers and batch status
-
Fix issue with
vt addcommand, in which ampersands in terms were not escaped in the created XML, causing errors (#39)
-
Speed up caching CSIDs and refnames by pipelining values directly to Redis instead of using individual collectionspace-refcache calls
-
vt add --csvoption now usesingest_dirif configured and only a file name is given (#53)
-
Client configuration management changes. To use new version:
-
In your
system_config.ymlfile:-
Remove initial
system:line and indetation of subsequent lines -
Specify a
client_config_dirlocation. See the client config management documentation page for more information.
-
-
Remove initial
redis:line and indentation of subsequent lines from yourredis.ymlfile if necessary -
After adding
client_config_dirto your system config, you will need to runthor config switch CONFIGNAME -
Delete
client_config.ymlfrom the CMT repository base directory if it is still there. -
Changes were made to how the active config is stored/looked up after I discovered you could get stuck unable to switch away from an invalid config. The changes have other side benefits, too.
-
-
Optional
ingest_dirsetting in client config, which allows you to enter file name only when callingthor batch add--csvoption for files in that default ingest directory. -
thor cspace:reindexcommand to trigger fulltext reindexing of the configured CollectionSpace instance -
Utility script:
utils/copy_media_bucket_objects_in_place.rb- If media ingest bucket is created without overriding the default AWS encryption settings, we run into problems with access to the files. Infrastructure can fix the encryption settings of the bucket, but any objects already in the bucket need to be copied in place to refresh them to use the new encryption settings. This is a quick/dirty script to do all that copying.
-
thor rt:delete_allcommand for objects, procedures, and authorities. Dothor rt help delete_allfor more details. (PR#42) -
Attempts to handle ingest errors using AWS Lambda logs — still janky (PR#43, 44, 46)
-
Fix issue where application failed when there are duplicates reported in ingstat check (PR#45)
-
Issue blocking ingest of chronology authority terms (PR#46)
-
Update
collectionspace-mapperto get fix for #148 (PR#47) -
Fixes CLI output where processes didn’t report about themselves correctly (PR#47)
-
Optional
aws_media_ingest_profilesystem config setting, specifying AWS profile through which to access client media ingest bucket -
Optional
media_bucketclient config setting, specifying name of client media ingest bucket -
Two new commands to control the access policy of client media ingest bucket:
-
thor bucket:public (makes bucket public, so media can be ingested)
-
thor bucket:private (makes bucket private)
-
-
Ability to ingest structured date details. See Dates workflows documentation for details.
-
Upload of CS XML objects to S3 bucket for ingest now requires AWS profile to be set up on local system, and
aws_profilesetting insystem_config.yml
-
New
media_with_blob_upload_delayandmax_media_upload_threadsclient config settings added (PR#27)
-
thor csid:deletecommand, allowing deletion of records by rectype+CSID. Dothor csid help deletefor more details.
-
Option for passing in custom source for
thor media:deriv_reportchanged fromblob_datatocsvfor better consistency with other commands, and less typing -
When uploading media with blob to S3, post-upload "sleep post #{identificationnumber}" message written to STDOUT. This is temporary behavior to give some feedback that progress is occurring with the expected upload delay, since the upload process now takes ages.
-
Default system config
max_threadsincreased to 10
This is not a breaking change, but reflects this is now being used for CS migrations by more than one person.
-
When mapping a batch with
rectype=media, rows withblob_urivalues that cannot be converted intoURIobjects will get a "media_uri cannot be encoded as valid ingest URI. File ingest may not work as expected" warning. This is a warning, not an error, since CS can successfully ingest from file paths that do not convert to valid URIs. -
thor decode:objectsthat decodes object keys of all objects in S3 bucket, writing the results to a CSV in your base directory. This streamlines the process of getting the human-readable record id values for objects left in S3 bucket (assumed to be ingest errors) -
thor media:blob_datacommand to write report of all media procedures and, if present, their blob details. See media ingest documentation. -
thor media:deriv_reportcommand to generate report of derivatives present for eachblobcsidgiven. See media ingest documentation. -
Optional
:media_with_blob_upload_delayclient config setting. When uploading to S3 bucket for ingest, will wait this long after each media record that has an associatedmediaFileURIvalue.
-
Ability to ingest vocabulary terms. See documentation (PR#21)
-
bin/consolenow uses Pry instead of IRB (PR#20)
-
Config validation constraint requiring
bastion-hostvalue to containbastion. The host for tunneling for a project I am working on does not containbastion(PR#19)