Aaron D. Lee
01f0173dd4
Add EXIF Editor, consolidate channel key resolution
...
EXIF Editor (Library → CLI → API → WebUI):
- src/stegasoo/utils.py: read_image_exif(), write_image_exif()
- CLI: stegasoo tools exif [--clear|--set Field=Value]
- API: /api/tools/exif, /api/tools/exif/update, /api/tools/exif/clear
- WebUI: EXIF Editor tab with inline editing, clear all, save/download
Architectural consolidation:
- Moved resolve_channel_key() to src/stegasoo/channel.py (was duplicated in 3 frontends)
- Added get_channel_response_info() for consistent API/WebUI responses
- Frontends now use thin wrappers that translate exceptions
DCT improvements:
- Added will_fit_by_mode() pre-check to WebUI encode (fail fast)
- Suggests LSB mode when DCT capacity exceeded
Dependencies:
- Added piexif>=1.1.0 for EXIF editing
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-04 01:16:33 -05:00
Aaron D. Lee
948a582e5d
Fix numpy binary incompatibility on Python 3.10
...
Add explicit numpy>=2.0.0 constraint to dct, web, and api extras.
Scipy/jpegio wheels are built against numpy 2.x, so we need to ensure
numpy 2.x is installed to avoid dtype size mismatch errors.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-02 17:47:44 -05:00
Aaron D. Lee
6b21190f97
Lint cleanup: ruff fixes across entire codebase
...
- Strip trailing whitespace from all Python files
- Fix import sorting (I001) across all modules
- Convert Optional[X] to X | None syntax (UP045)
- Remove unused imports (F401)
- Convert lambda assignments to def functions (E731)
- Add TYPE_CHECKING import for forward references
- Update pyproject.toml ruff config:
- Move select/ignore to [tool.ruff.lint] section
- Add per-file ignores for DCT colorspace naming (N803/N806)
- Add per-file ignores for __init__.py import structure (E402)
- Exclude defunct test_routes.py
- Remove frontends/web/test_routes.py (defunct debug snippet)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-02 17:17:38 -05:00
Aaron D. Lee
d94ee7be90
Bump version to 4.0.1 with Web UI improvements
...
- Update version to 4.0.1 across constants.py, __init__.py, pyproject.toml, README
- Refactor channel key UI from radio buttons to select dropdown
- Add LED indicator and key capsule CSS styles
- Reorganize encode/decode forms: RSA key section moved up, PIN + Channel in row
- Streamline channel key JavaScript for dropdown-based selection
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-02 16:43:25 -05:00
Aaron D. Lee
ef7478b30a
A whoooole lotta 4.0.x fixes.
2026-01-01 22:18:13 -05:00
Aaron D. Lee
3898031480
WebUI Fixes for 3.2
2026-01-01 03:39:44 -05:00
Aaron D. Lee
34376b2dfe
Version 3.0.2 full expirimental DCT support, jpegio for better jpg manipulation, etc.
2025-12-31 15:43:29 -05:00
Aaron D. Lee
e4a4a5e074
Small fixes, 2.2.1
2025-12-30 23:40:39 -05:00
Aaron D. Lee
5ed25f706f
More CI/CD fixes and stuff (automation goodness).
2025-12-30 00:28:58 -05:00
Aaron D. Lee
f35acfed06
Fixed QR functionality in the API container.
2025-12-29 15:08:48 -05:00
Aaron D. Lee
7dd2e2daf7
Added debug, additional comments, encoded file thumbnail view.
2025-12-28 20:18:11 -05:00
Aaron D. Lee
1538943451
Now version 2.0.1, I guess.
2025-12-28 00:07:04 -05:00
Aaron D. Lee
8581b86104
New Version 2 -- prolly doesn't work.
2025-12-27 22:40:31 -05:00