Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ca72648f8 | ||
|
|
6d03e727c9 | ||
|
|
5bbb36a613 | ||
|
|
6e8a3948d1 |
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 DataLoom contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,10 +1,17 @@
|
||||
> [!WARNING]
|
||||
> **Use at your own risk.** DataLoom is provided “as is” and “as available,” without warranties of any kind. The author and contributors are not responsible for data loss, corrupted exports, credential exposure, security incidents, incorrect duplicate detection, incorrect merge decisions, or any other direct or indirect damage resulting from the use or misuse of this software. Always work from backups and verify every generated export before using it.
|
||||
|
||||
# DataLoom
|
||||
|
||||
Offline desktop application for reviewing and merging Bitwarden exports.
|
||||
|
||||

|
||||
|
||||
*DataLoom desktop review interface.*
|
||||
|
||||
## Status
|
||||
|
||||
Initial project scaffold and design documentation. Implementation has not started.
|
||||
Working Windows 11 portable release available from the private/public Gitea release page, with synthetic tests and review workflow validated.
|
||||
|
||||
## Goals
|
||||
|
||||
@@ -20,10 +27,31 @@ Initial project scaffold and design documentation. Implementation has not starte
|
||||
|
||||
Bitwarden exports and the requested full audit log contain secrets. DataLoom must display a prominent warning before import and clearly identify all generated files and their locations. Real exports must never be committed to source control.
|
||||
|
||||
## Disclaimer
|
||||
|
||||
DataLoom is an independent, unofficial tool and is not affiliated with, endorsed by, or supported by Bitwarden.
|
||||
|
||||
The software may process extremely sensitive information, including passwords, authentication secrets, secure notes, payment-card data, and identity information. It is provided without guarantees of correctness, completeness, security, availability, or fitness for any particular purpose.
|
||||
|
||||
You are solely responsible for:
|
||||
|
||||
- Maintaining safe backups of your original exports
|
||||
- Verifying all duplicate classifications and merge results
|
||||
- Protecting imported files, output files, and audit logs
|
||||
- Confirming that generated exports are complete and valid
|
||||
- Assessing whether the software is suitable for your environment
|
||||
- Any consequences of using the software
|
||||
|
||||
The author and contributors accept no responsibility or liability for loss, disclosure, corruption, compromise, or misuse of data.
|
||||
|
||||
## Planned technology
|
||||
|
||||
Python and PySide6/Qt for a desktop application. The initial implementation will use synthetic fixtures only.
|
||||
|
||||
## Development
|
||||
|
||||
The detailed design is in [`docs/design.md`](docs/design.md). See [`docs/roadmap.md`](docs/roadmap.md) for the planned milestones.
|
||||
The quick-start guide is in [`docs/how-to.md`](docs/how-to.md). The detailed design is in [`docs/design.md`](docs/design.md). See [`docs/completion-report.md`](docs/completion-report.md) for the v0.1.0 delivery record and [`docs/roadmap.md`](docs/roadmap.md) for future enhancements.
|
||||
|
||||
## License
|
||||
|
||||
DataLoom is released under the [MIT License](LICENSE).
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
# Security
|
||||
|
||||
DataLoom is designed to process Bitwarden exports locally and offline.
|
||||
|
||||
Bitwarden exports may contain passwords, TOTP secrets, secure notes, credit-card data, identities, custom fields, and other highly sensitive information.
|
||||
|
||||
## Important rules
|
||||
|
||||
- Never upload real Bitwarden exports to public repositories, issue trackers, chat systems, or third-party services.
|
||||
- Never commit real exports, merged vault files, audit logs, screenshots, crash dumps, or backups to this repository.
|
||||
- Use copies of exports for testing.
|
||||
- Review generated output and audit-log locations carefully.
|
||||
- Treat full-secret audit logs as equivalent to unencrypted password-vault files.
|
||||
- Delete or securely protect generated files when they are no longer required.
|
||||
- Use the synthetic fixtures in `tests/fixtures/` for development and testing.
|
||||
|
||||
DataLoom does not encrypt imported files, exported files, or audit logs. Users are responsible for protecting all sensitive files created or processed by the application.
|
||||
|
||||
## Reporting a security issue
|
||||
|
||||
Please do not include real vault exports, passwords, tokens, or other secrets in a bug report. Describe the issue using synthetic data whenever possible. For sensitive reports, contact the repository maintainer privately rather than opening a public issue.
|
||||
|
||||
## Scope
|
||||
|
||||
This document describes safe handling of data processed by DataLoom. It is not a guarantee that the software is secure or suitable for production use. Review the disclaimer in `README.md` before using the application.
|
||||
@@ -0,0 +1,60 @@
|
||||
# DataLoom completion report
|
||||
|
||||
**Project status:** Initial release complete; future enhancements are pending.
|
||||
|
||||
## Delivered
|
||||
|
||||
- Offline Windows desktop application built with Python, PySide6, and Qt.
|
||||
- Same-format Bitwarden JSON or CSV import for two or more files.
|
||||
- Unencrypted-export validation and import warning.
|
||||
- Conservative URL normalization, including case folding, trailing-slash removal, default-port handling, and `www.` equivalence.
|
||||
- Automatic removal of exact login duplicates using item type, normalized username, password, and normalized URI values.
|
||||
- Likely-duplicate review for same type, URL, and username with differing values.
|
||||
- Structured side-by-side duplicate comparison.
|
||||
- Newest-record recommendation when valid `revisionDate` values are available.
|
||||
- Manual review choices to keep one selected record or keep both records.
|
||||
- Same-format JSON/CSV export with CSV loss warnings.
|
||||
- In-app and plain-text audit logging, with full-secret logging optional and disabled by default.
|
||||
- Synthetic Bitwarden-style fixtures and automated tests.
|
||||
- Portable Windows 11 executable built with PyInstaller.
|
||||
- MIT license, security guidance, disclaimer, quick how-to, and README screenshot.
|
||||
|
||||
## Validation performed
|
||||
|
||||
- Local synthetic test suite: **6 passed**.
|
||||
- Synthetic merge smoke test: 8 records loaded, 1 exact duplicate removed, 7 records retained, 2 review groups generated.
|
||||
- JSON export round-trip verified.
|
||||
- Windows 11 synthetic test suite: **6 passed**.
|
||||
- Windows PyInstaller build completed successfully.
|
||||
- Packaged executable launch check passed and remained running for 8 seconds.
|
||||
- Interactive Windows 11 testing by Rob confirmed the application behavior was satisfactory.
|
||||
|
||||
## Release
|
||||
|
||||
- Version: `v0.1.0`
|
||||
- Asset: `DataLoom-v0.1.0-windows-x64.exe`
|
||||
- Target: Windows 11 x64
|
||||
- Release URL: `https://gitea.ledrew.me/ledadmin/DataLoom/releases/tag/v0.1.0`
|
||||
|
||||
## Public-readiness review
|
||||
|
||||
A final read-only review was completed before publication. The tracked repository contains no real Bitwarden exports, credentials, API keys, SSH keys, personal identifiers, internal network addresses, or local machine paths. The fixtures contain synthetic data only. The Git author email `admin@ledrew.me` was reviewed and explicitly approved for public visibility.
|
||||
|
||||
Release and download URLs were verified to use `https://gitea.ledrew.me` rather than the internal Gitea address.
|
||||
|
||||
## Known limitations
|
||||
|
||||
- CSV cannot represent every Bitwarden JSON feature losslessly. DataLoom reports known CSV loss risks; JSON is preferred for complete preservation.
|
||||
- The current UI is read-only apart from duplicate keep decisions; it does not edit individual vault records.
|
||||
- Windows desktop interaction was validated manually; Linux GUI testing was intentionally skipped.
|
||||
- The application is not affiliated with or endorsed by Bitwarden.
|
||||
- Generated exports and audit logs are not encrypted or automatically deleted.
|
||||
|
||||
## Future enhancements
|
||||
|
||||
- Improve field-level difference highlighting beyond the current structured comparison.
|
||||
- Add richer support for all Bitwarden item types, attachments, passkeys, linked fields, and nested custom data.
|
||||
- Add explicit export preflight and stronger loss-detection for CSV.
|
||||
- Add optional secure handling and retention controls for audit logs.
|
||||
- Add application icons, screenshots, and polished packaging metadata.
|
||||
- Add more comprehensive Windows UI automation.
|
||||
@@ -0,0 +1,37 @@
|
||||
# DataLoom quick how-to
|
||||
|
||||
DataLoom reviews and merges unencrypted Bitwarden exports locally on Windows 11.
|
||||
|
||||
## Before you begin
|
||||
|
||||
1. Export your vault from Bitwarden as JSON or CSV.
|
||||
2. Keep the original exports unchanged and work from copies.
|
||||
3. Use the same format for every file in a batch. JSON is recommended because it preserves more Bitwarden data than CSV.
|
||||
4. Never place real exports, merged vaults, or audit logs in this repository.
|
||||
|
||||
## Review and merge
|
||||
|
||||
1. Start `DataLoom.exe`.
|
||||
2. Accept the sensitive-data warning.
|
||||
3. Leave **Enable full secret logging** unchecked unless you deliberately want passwords, TOTP values, notes, and other secrets written to the audit log.
|
||||
4. Select two or more Bitwarden JSON or CSV exports.
|
||||
5. Review the **Import Summary** tab.
|
||||
6. Use **Merged Entries** to see records that will be included.
|
||||
7. Use **Duplicate Review** to inspect flagged groups:
|
||||
- Exact duplicates are removed automatically.
|
||||
- Likely or possible duplicates are shown side by side.
|
||||
- The newest record is recommended when reliable revision dates exist.
|
||||
- Choose a record to keep, or choose **Keep both records**.
|
||||
8. Click **Export merged vault…** and save the output. JSON input produces JSON output; CSV input produces CSV output.
|
||||
9. Verify the generated export before importing it into Bitwarden.
|
||||
|
||||
## Output and audit files
|
||||
|
||||
DataLoom displays the exact locations of the merged export and `dataloom-audit.log`. It does not automatically delete either file. Protect or securely delete them when no longer needed.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Mixed JSON/CSV batches are rejected; select files of one format only.
|
||||
- Encrypted exports are rejected; export an unencrypted copy for this offline tool.
|
||||
- CSV may not represent every Bitwarden feature. Read the CSV loss warnings and use JSON when complete preservation matters.
|
||||
- If the application does not open, download the current Windows release and confirm that Windows Defender or another security tool has not blocked it.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
+19
-8
@@ -1,12 +1,23 @@
|
||||
# Roadmap
|
||||
|
||||
1. Define internal record model and synthetic JSON/CSV fixtures.
|
||||
2. Implement strict same-format Bitwarden import and validation.
|
||||
3. Implement loss-aware field preservation and URL normalization.
|
||||
4. Implement exact/likely/possible duplicate classification and newest-record preference.
|
||||
5. Implement same-format merged export with CSV loss warnings.
|
||||
6. Build PySide6 desktop workflow and read-only review screens.
|
||||
7. Add comprehensive plain-text and in-app audit logging.
|
||||
8. Add packaging documentation and desktop smoke tests.
|
||||
## Completed for v0.1.0
|
||||
|
||||
- [x] Define internal record model and synthetic JSON/CSV fixtures.
|
||||
- [x] Implement strict same-format Bitwarden import and validation.
|
||||
- [x] Implement loss-aware field preservation and URL normalization.
|
||||
- [x] Implement exact/likely duplicate classification and newest-record preference.
|
||||
- [x] Implement same-format merged export with CSV loss warnings.
|
||||
- [x] Build PySide6 desktop workflow and review screens.
|
||||
- [x] Add optional plain-text and in-app audit logging.
|
||||
- [x] Add Windows packaging documentation and desktop smoke tests.
|
||||
- [x] Build and manually validate the Windows 11 portable release.
|
||||
|
||||
## Future enhancements
|
||||
|
||||
- Improve field-level difference highlighting and review navigation.
|
||||
- Expand complete support for attachments, passkeys, linked fields, and all nested Bitwarden data.
|
||||
- Add stronger CSV loss detection and export preflight controls.
|
||||
- Add optional secure audit-log retention and handling controls.
|
||||
- Add packaging polish, icons, and broader Windows UI automation.
|
||||
|
||||
Real Bitwarden exports are not required for development or tests.
|
||||
|
||||
Reference in New Issue
Block a user