Stanko K.R.
36ee253a1a
Stack notifications everywhere
...
We had client-side notification stacking in the tray since launch, but now we want to stack notifications in the notifications page, in API responses and in email bundles.
2026-02-12 10:29:50 +01:00
Stanko K.R.
37d7f5c569
Give more detail about why the import failed
2026-02-11 13:47:21 +01:00
Mike Dalessio
d611b2cc6c
Move comment events when card moves to a new board ( #2486 )
...
When a card moves between boards, comment events were staying on the
old board. Now they move with the card.
2026-02-04 15:04:28 -05:00
Mike Dalessio
7f473eda66
Validate ActionText associations during import check phase
...
ActionTextRichTextRecordSet now calls check_associations_dont_exist to
ensure imported ActionText records only reference records within the
same import, matching the behavior of the parent RecordSet class.
2026-02-03 13:46:28 -05:00
Stanko K.R.
1c1a73c57c
Check if the file exists before adding it
...
ZipKit creates a placeholder record when add_file is called, this record is then filled with the content that's passxed to write. But if the blob's file doesn't exist then an error is rased and the placeholder is never filled. This results in a ZIP that has a place in its catalog for the blob, but no contant for it, which makes it invalid.
2026-02-03 15:01:10 +01:00
Stanko K.R.
ffce51a42f
Ignore faulty ZIP files
2026-02-03 14:04:54 +01:00
Stanko K.R.
a4bec6e407
Ignore missing attachments
2026-02-03 13:51:22 +01:00
Stanko K.R.
b497aa07e9
Fix crash due to missing ActiveStorage URL options
2026-02-02 21:49:06 +01:00
Stanko K.R.
e587cb6a2b
Capture backtrace of nested errors
2026-02-02 21:37:37 +01:00
Stanko K.R.
5eb15ebf4d
Remove debug code
2026-02-02 21:33:48 +01:00
Stanko K.R.
e0c3e09aa9
Add more debug info
2026-02-02 21:17:43 +01:00
Stanko K.R.
d0c6253716
Pass all service options
2026-02-02 20:06:45 +01:00
Stanko K.R.
88d84b3eaa
Prevent duplicate files in user data export
2026-02-02 19:58:57 +01:00
Stanko K.R.
4b7bbda222
Write in binmode
2026-02-02 19:46:20 +01:00
Stanko K.R.
4b70c1cc3b
Replace custom IO object with a transport manager IO
2026-02-02 19:31:18 +01:00
Stanko K.R.
77d9331d90
Add missing method to IO object
2026-02-02 19:06:37 +01:00
Stanko K.R.
5c929238b7
Rename jobs
2026-02-02 18:22:07 +01:00
Stanko K.R.
b06d95a20d
Delete accounts for failed imports
2026-02-02 16:24:10 +01:00
Stanko K.R.
539cd638e2
Check that associations don't exist
...
Without this you can change a belongs to to some other account's record and get access to it
2026-02-02 16:03:50 +01:00
Stanko K.R.
dca67c59ca
Bust the cache after import
...
Without this exporting, deleting and then re-imporing an account would reuse the old cache entries since the IDs are the same, but those cache entries will likely have the old account ID and would break
2026-02-02 15:48:49 +01:00
Stanko K.R.
1bc1b68ddf
Explicitly use the default storage service
2026-02-02 15:22:16 +01:00
Stanko K.R.
60c63271b9
Fix ActiveStorage writing to disk
2026-02-02 15:16:37 +01:00
Stanko K.R.
ac7d0308ac
Add size to remote io
2026-02-02 14:09:04 +01:00
Stanko K.R.
a70bbf472b
Fix crash on account destruction
2026-02-02 14:08:52 +01:00
Stanko K.R.
edb676cd2c
Make remote IOs rewindable
...
This is required for active storage to work
2026-02-02 13:52:14 +01:00
Stanko K.R.
d7dcf64310
Remove model validation
2026-02-02 13:38:34 +01:00
Stanko K.R.
54a7ecea98
Fail the import if the check fails
2026-02-02 13:33:06 +01:00
Stanko K.R.
2dbbeffdcf
Fix SSL issues when reading remote ZIP files
...
This is caused by our self-signed PureStorage certs. Once that's taken care of this commit can be reverted.
2026-02-02 13:16:59 +01:00
Stanko K.R.
ccbf571be4
Fix crash on commentable check
2026-02-02 12:51:46 +01:00
Stanko K.R.
de69d2e6fe
Add import cleanup
2026-02-02 12:36:48 +01:00
Stanko K.R.
5bbd7f633d
Process everything in chunks
...
The old implementation loaded files into memory to provide an IO interface. This has the obvious downside of loading any file included in the import, e.g. a 10GB video file, into memory. ZipKit has no native IO object for reading but it provides all the necessary methods to implement one.
2026-02-02 12:36:48 +01:00
Stanko K.R.
dd13a3b87c
Style
2026-02-02 12:36:48 +01:00
Stanko K.R.
774a44f800
Tweak email copy
2026-02-02 12:36:48 +01:00
Stanko K.R.
a791fe1919
Hide importing accounts
2026-02-02 12:36:48 +01:00
Stanko K.R.
27c73ff42b
Rename validate to check
...
Validate is an ActiveModel method, overriding it could have unintended side-effects so I opted to rename it
2026-02-02 12:36:48 +01:00
Stanko K.R.
0240ffca34
Fix import validation failure
...
During import, card return nil since it doesn't exist yet
2026-02-02 12:36:48 +01:00
Stanko K.R.
b659e326e1
Name the export ZIPs differently
2026-02-02 12:36:48 +01:00
Stanko K.R.
992f15066b
Replace RubyZip with ZipKit
...
ZipKit can read and write files directly from S3 which makes both imports and exports way more efficient in terms of disk usage.
2026-02-02 12:36:48 +01:00
Stanko K.R.
184150006f
Unify ZIP file interactions between all exports
2026-02-02 12:36:48 +01:00
Stanko K.R.
eed2b3c8a7
Cleanup code
2026-02-02 12:36:48 +01:00
Stanko K.R.
f50d6d093d
Implement cursors for imports
2026-02-02 12:36:48 +01:00
Stanko K.R.
63f6be4ef5
Resolve import conflicts
2026-02-02 12:36:48 +01:00
Stanko K.R.
6044303078
Remove unused association
2026-02-02 12:36:48 +01:00
Stanko K.R.
2cb77eaaf7
Fix orphaned Entropy records upon Account destruction
2026-02-02 12:36:48 +01:00
Stanko K.R.
0452d243e1
Fix account creation and import updates
2026-02-02 12:36:48 +01:00
Stanko K.R.
b97934ff48
Fix crash when exporting ActiveStorage files
2026-02-02 12:36:48 +01:00
Stanko K.R.
122a228ed4
Use convention to create boilerplate record sets
2026-02-02 12:36:48 +01:00
Stanko K.R.
f457273937
Convert double negatives into a positive question
2026-02-02 12:36:48 +01:00
Stanko K.R.
00c5f7feab
Break import and export objects into record sets
2026-02-02 12:36:48 +01:00
Stanko K.R.
19ae555c2e
Convert Account::SingleUserExport to User::DataExport
2026-02-02 12:36:48 +01:00