Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
291 commits
Select commit Hold shift + click to select a range
3b7c9c3
chore(deps): Bump date-fns from 3.6.0 to 4.1.0 in /frontend
dependabot[bot] Feb 2, 2026
d2f6873
Merge pull request #16 from Serph91P/dependabot/npm_and_yarn/frontend…
Serph91P Feb 2, 2026
60ab6b5
Merge branch 'develop' into dependabot/npm_and_yarn/frontend/npm-mino…
Serph91P Feb 2, 2026
2f6a5bb
Merge pull request #15 from Serph91P/dependabot/npm_and_yarn/frontend…
Serph91P Feb 2, 2026
26cb80c
Add schedule editor to Targets page and improve logging
Serph91P Feb 2, 2026
5c19000
Add editable Komodo settings in frontend
Serph91P Feb 2, 2026
7ebd7e8
Remove ARM64 build from CI workflow
Serph91P Feb 2, 2026
cac4f87
Fix linting errors in backend and frontend
Serph91P Feb 2, 2026
1019ce8
Fix TypeScript type error: use undefined instead of null for schedule…
Serph91P Feb 2, 2026
2d457c8
Add link from Schedules page to Targets page for schedule configuration
Serph91P Feb 2, 2026
dce585b
feat: Add Setup-Wizard for backup targets and redesign schedules
Serph91P Feb 4, 2026
e7de3b7
fix: Update Dashboard to use new ScheduleEntity interface
Serph91P Feb 4, 2026
383adfd
feat: Add retention policy per target support
Serph91P Feb 4, 2026
6fb29cd
docs: Update FEATURES_TODO - Retention Policy pro Target complete
Serph91P Feb 4, 2026
09fb24b
fix: Add database migration for encrypted columns in backups table
Serph91P Feb 4, 2026
0d04ec5
style: Format database.py with ruff
Serph91P Feb 4, 2026
67eac31
docs: Add mandatory pre-commit linting checklist to copilot instructions
Serph91P Feb 4, 2026
7b0d5b2
fix: Fix flake8 line-too-long and unused import errors
Serph91P Feb 4, 2026
06a7f85
fix: Fix isort import ordering in targets.py
Serph91P Feb 4, 2026
e227034
fix: Add schedule = None to mock targets in scheduler tests
Serph91P Feb 5, 2026
a06f3d5
fix: Add database migrations for schedule_id, retention_policy_id, ke…
Serph91P Feb 5, 2026
08adbca
fix: Update frontend tests for new ScheduleEntity model
Serph91P Feb 5, 2026
8f81a27
feat: Implement stack backup support
Serph91P Feb 5, 2026
7b4c752
refactor(ui): restructure to backup-focused interface with unified Ba…
Serph91P Feb 5, 2026
51b2d2f
fix: run container as root to access Docker volumes
Serph91P Feb 5, 2026
d1a7351
fix: remove unused HttpResponse import in Backups.test.tsx
Serph91P Feb 5, 2026
91396db
fix: run backend as root for Docker socket access
Serph91P Feb 5, 2026
3008593
docs: update FEATURES_TODO.md - mark Stack-Backup and UI restructurin…
Serph91P Feb 5, 2026
29a448b
feat: Add automatic stack dependency detection
Serph91P Feb 5, 2026
c7ba067
feat: selective volume backup, path filtering, backups page redesign …
Serph91P Feb 6, 2026
d65b853
fix: linting issues - remove trailing blank line and shorten long line
Serph91P Feb 6, 2026
cc53dc1
fix: apply black formatting to backups.py
Serph91P Feb 6, 2026
adee32c
fix: update Backups.test.tsx for new page design
Serph91P Feb 6, 2026
de6ba3b
fix: add migration for selected_volumes, include_paths, exclude_paths…
Serph91P Feb 8, 2026
89e1e95
refactor: remove Targets page and improve encrypted backup UX
Serph91P Feb 8, 2026
bc91195
fix: add cascade delete to Backup relationship in BackupTarget model
Serph91P Feb 10, 2026
99acef5
fix: enhance delete_target endpoint to remove associated backup files
Serph91P Feb 10, 2026
fa8dd23
feat(wizard): add searchable, sorted target selection lists
Serph91P Feb 10, 2026
e3b3076
chore(deps): update frontend dependencies
Serph91P Feb 10, 2026
01cb6c5
feat(wizard): improve schedule selection UX
Serph91P Feb 10, 2026
bf34d22
feat(wizard): improve retention policy selection UX
Serph91P Feb 10, 2026
9543dcd
feat: enable browsing encrypted backup contents with private key
Serph91P Feb 10, 2026
1400b71
feat: add backup target editing and remote storage browser
Serph91P Feb 10, 2026
0d55c80
feat: add edit functionality for backup targets with dialog
Serph91P Feb 11, 2026
768aace
feat: implement BackupEditDialog component for editing backup configu…
Serph91P Feb 11, 2026
8dee243
feat: implement UX design plan Phase 1 & 2
Serph91P Feb 22, 2026
20d93c7
Merge pull request #24 from Serph91P/feature/ux-improvements-phase1-2
Serph91P Feb 22, 2026
cdede86
feat: Phase 3 - Consistency & Polish (9 UX improvements)
Serph91P Feb 22, 2026
1c19dd0
Merge pull request #25 from Serph91P/feature/ux-improvements-phase3
Serph91P Feb 22, 2026
1c1c10b
feat: implement Phase 4 UX improvements
Serph91P Feb 22, 2026
1718659
Merge pull request #26 from Serph91P/feature/ux-improvements-phase4
Serph91P Feb 22, 2026
3d4bebb
feat(ux): Phase 5 — UX polish batch (15 items)
Serph91P Feb 22, 2026
206cacb
Merge pull request #27 from Serph91P/feature/ux-improvements-phase5
Serph91P Feb 22, 2026
0e84d2d
feat(ux): Phase 6 — Final polish & stack improvements (8 items)
Serph91P Feb 22, 2026
6d315de
Merge pull request #28 from Serph91P/feature/ux-improvements-phase6
Serph91P Feb 22, 2026
5b8e1ea
feat(ux): Phase 7 - Components, Volumes & Global improvements
Serph91P Feb 22, 2026
aace7a5
Merge pull request #29 from Serph91P/feature/ux-improvements-phase7
Serph91P Feb 22, 2026
9d939a8
feat(ux): Phase 8 - Notification Center, Drawer & Reorder
Serph91P Feb 22, 2026
395b038
feat(security): OWASP security hardening
Serph91P Feb 24, 2026
2726e10
Delete plan/refactor-security-hardening-1.md
Serph91P Feb 24, 2026
e34f5cc
Merge pull request #30 from Serph91P/feature/ux-improvements-phase8
Serph91P Feb 24, 2026
a5bb720
fix: harden backup endpoints against path traversal, symlink bypass, …
Serph91P Feb 24, 2026
469a01d
fix: add SSRF validation and encrypt Komodo API key at rest
Serph91P Feb 24, 2026
4244b84
fix: add session invalidation on password change and login timing fix
Serph91P Feb 24, 2026
4366499
fix: add hook command timeout and use realpath in tar extraction
Serph91P Feb 24, 2026
bf47b0c
fix: pass DEK via stdin to openssl instead of command-line argument
Serph91P Feb 24, 2026
b742669
feat: add security config settings for hook timeout, SSH keys, and do…
Serph91P Feb 24, 2026
eed5ed3
fix: validate SSH key paths against allowed directory allowlist
Serph91P Feb 24, 2026
e453c61
fix: add Field constraints to retention policy request models
Serph91P Feb 24, 2026
f5d9498
fix: move confirm_data_loss from query param to request body
Serph91P Feb 24, 2026
b9a0396
fix: add authentication token to WebSocket connection
Serph91P Feb 24, 2026
991ba90
fix: harden nginx security headers and CSP policy
Serph91P Feb 24, 2026
63f5995
fix: add connection and operation timeouts to all storage backends
Serph91P Feb 24, 2026
902d8b0
fix: enforce key file permissions and conditionally disable API docs
Serph91P Feb 24, 2026
4ea5bab
chore: add plan/ directory to .gitignore
Serph91P Feb 24, 2026
6b84016
Merge pull request #31 from Serph91P/feature/security-hardening
Serph91P Feb 24, 2026
01b9978
chore: configure Dependabot to target develop branch
Serph91P Feb 24, 2026
96c9cb8
feat(security): apply security hardening phase 2
Serph91P Feb 24, 2026
681e260
Merge pull request #32 from Serph91P/feature/security-hardening-2
Serph91P Feb 24, 2026
5ff6176
fix: improve logging format and error handling in backup API
Serph91P Feb 24, 2026
48eedae
fix: enhance error logging for key regeneration failure
Serph91P Feb 24, 2026
eeba01d
fix: mask sensitive information in system info response
Serph91P Feb 24, 2026
106fa9f
feat(docs): enhance deployment instructions with Traefik and Caddy ex…
Serph91P Feb 24, 2026
62473e2
chore: remove obsolete Copilot setup workflow
Serph91P Feb 24, 2026
018ca98
feat: implement graceful shutdown for backup engine
Serph91P Feb 24, 2026
cec104d
fix: set COOKIE_SECURE to False and add logging and shutdown settings
Serph91P Feb 24, 2026
8c6e1d2
feat: enhance logging configuration and add structured JSON logging f…
Serph91P Feb 24, 2026
eb619f1
feat: update rate limiter configuration to improve readability
Serph91P Feb 24, 2026
bae2102
feat: enhance backup API by adding request parameter handling and rat…
Serph91P Feb 24, 2026
64376bd
feat: add request parameter to container start/stop endpoints and enf…
Serph91P Feb 24, 2026
a633788
fix: update error message in path traversal test to reflect allowed d…
Serph91P Feb 24, 2026
cb8c2f8
refactor: improve Docker socket group setup in entrypoint script
Serph91P Feb 24, 2026
9013f50
fix: add missing start_interval configuration to healthcheck in docke…
Serph91P Feb 24, 2026
a465153
feat: add comprehensive security scanning workflow including SAST, DA…
Serph91P Feb 24, 2026
40e7221
fix: remove unnecessary '|| true' from test and lint commands for acc…
Serph91P Feb 24, 2026
ce0a392
refactor: optimize auto-detection logic and improve performance with …
Serph91P Feb 24, 2026
64e7765
refactor: simplify state management in StepRetention component by usi…
Serph91P Feb 24, 2026
a39a9a0
refactor: streamline schedule selection logic by using useRef for aut…
Serph91P Feb 24, 2026
8ebb4d8
refactor: replace useState with useRef for auto-selection state manag…
Serph91P Feb 24, 2026
77dc107
refactor: optimize backup retrieval logic with useCallback for improv…
Serph91P Feb 24, 2026
c638613
refactor: update dashboard test assertions for improved clarity and a…
Serph91P Feb 24, 2026
3c4567c
fix: handle optional event parameter in WebSocket disconnect logic
Serph91P Feb 24, 2026
6ccdf36
fix: ensure onclose event handler receives CloseEvent in MockWebSocket
Serph91P Feb 24, 2026
5f713e9
Merge pull request #33 from Serph91P/feature/security-hardening-2
Serph91P Feb 24, 2026
c594224
fix: re-add /ws to PUBLIC_PATHS for WebSocket connectivity
Serph91P Feb 24, 2026
d2c9071
fix(komodo): add API secret support for proper authentication
Serph91P Feb 24, 2026
200fa43
fix(encryption): fix backup decryption failure after security hardening
Serph91P Feb 24, 2026
eb6b1f5
fix: resolve 4 bugs from bugfixing round
Serph91P Feb 24, 2026
c56ce40
Merge pull request #34 from Serph91P/fix/komodo-api-secret
Serph91P Feb 24, 2026
94748cf
Merge pull request #35 from Serph91P/fix/backup-decryption
Serph91P Feb 24, 2026
305b841
Merge pull request #36 from Serph91P/fix/bugfixing-round
Serph91P Feb 24, 2026
2e7d91a
fix: WebSocket auth reads session cookie directly
Serph91P Feb 24, 2026
a660365
Merge pull request #37 from Serph91P/fix/websocket-auth
Serph91P Feb 24, 2026
595eab4
security: comprehensive hardening across backend, nginx, and infra
Serph91P Feb 24, 2026
9564a5c
docs: complete .env.example and docker-compose.yml with all env vars
Serph91P Feb 24, 2026
c452809
feat: add TRUSTED_PROXIES for correct client IP behind reverse proxy
Serph91P Feb 24, 2026
45abfae
Merge pull request #38 from Serph91P/security/hardening
Serph91P Feb 24, 2026
5ae3eca
fix: sanitize target names in filesystem paths and improve error mess…
Serph91P Feb 26, 2026
dfc3078
Merge pull request #39 from Serph91P/fix/backup-path-sanitization
Serph91P Feb 26, 2026
7eed3df
feat: auto-sync backups to remote storage & run tar as root for permi…
Serph91P Feb 27, 2026
738efb0
Merge pull request #40 from Serph91P/feature/auto-sync-and-root-tar
Serph91P Feb 27, 2026
f9a847a
feat: auto-sync backups to remote storage & run tar as root for permi…
Serph91P Feb 27, 2026
58cdbb6
Merge branch 'develop' into feature/auto-sync-and-root-tar
Serph91P Feb 28, 2026
8c6a701
Merge pull request #41 from Serph91P/feature/auto-sync-and-root-tar
Serph91P Feb 28, 2026
bd46e5a
feat: add Delete All Backups button per target
Serph91P Feb 28, 2026
674242d
Merge pull request #42 from Serph91P/feature/bulk-delete-backups
Serph91P Feb 28, 2026
45d0734
fix: sudo availability check fails due to sudoers glob mismatch
Serph91P Feb 28, 2026
c1c8ee7
Merge pull request #43 from Serph91P/fix/sudo-availability-check
Serph91P Feb 28, 2026
7b91ea1
fix: implement WebDAV PROPFIND XML parsing for list_files
Serph91P Feb 28, 2026
69d4522
Merge pull request #44 from Serph91P/fix/webdav-list-files
Serph91P Feb 28, 2026
cf5259e
feat: backup queue, sync fix, Komodo rewrite, Run All
Serph91P Feb 28, 2026
bc4615c
fix: sudoers rule needs wildcard for tar_worker arguments
Serph91P Feb 28, 2026
f00434c
Merge pull request #45 from Serph91P/feature/queue-komodo-sync-fixes
Serph91P Feb 28, 2026
ed0a67c
fix: storage browser date/size, tar_worker host paths, sequential tri…
Serph91P Feb 28, 2026
0208f9a
Merge pull request #46 from Serph91P/feature/queue-komodo-sync-fixes
Serph91P Mar 1, 2026
d6da752
chore(deps): update frontend dependencies
Serph91P Mar 2, 2026
f2c079e
feat: backup sync tracking, remote delete on local delete, upload sta…
Serph91P Mar 2, 2026
19b2c91
feat: remote browse fallback for backups not available locally
Serph91P Mar 2, 2026
5db06c1
Merge pull request #51 from Serph91P/chore/update-frontend-deps
Serph91P Mar 2, 2026
a5cba9d
Merge pull request #52 from Serph91P/feature/backup-sync-tracking
Serph91P Mar 2, 2026
741e2dd
Merge pull request #53 from Serph91P/feature/backup-remote-browse
Serph91P Mar 2, 2026
0c9e9b3
feat: sync encryption key to remote storage & selective delete scope
Serph91P Mar 2, 2026
5931927
Merge pull request #54 from Serph91P/feature/encryption-key-sync-and-…
Serph91P Mar 2, 2026
759c8ff
fix: remote sync retry, streaming uploads, and datetime comparison bugs
Serph91P Mar 3, 2026
df087e3
Merge pull request #55 from Serph91P/fix/remote-sync-retry-and-dateti…
Serph91P Mar 3, 2026
7b80511
Fix/remote sync retry and datetime bugs (#56)
Serph91P Mar 3, 2026
557388f
Fix/remote sync retry and datetime bugs (#57)
Serph91P Mar 3, 2026
d3a7854
Fix/remote sync retry and datetime bugs (#58)
Serph91P Mar 3, 2026
2b4361b
feat: add backup job logging (#59)
Serph91P Mar 3, 2026
7e4e0fc
feat: add Restore Wizard with destination selection and encryption su…
Serph91P Mar 3, 2026
6f7020f
feat: add delete_local_after_sync column to backup_targets table (#61)
Serph91P Mar 3, 2026
915f99b
feat: add delete_local_after_sync column to backup_targets table (#62)
Serph91P Mar 3, 2026
33f1fa6
fix: add missing delete_local_after_sync to TargetResponse builder (#63)
Serph91P Mar 3, 2026
b4b0e7b
fix: WebDAV download AttributeError on UPLOAD_CHUNK_SIZE (#64)
Serph91P Mar 3, 2026
7fabd8b
fix: validate .key file content before age decryption and fix test wa…
Serph91P Mar 3, 2026
b308de0
fix: prevent .key sidecar loss during remote sync and harden key file…
Serph91P Mar 4, 2026
18ad84d
fix: add ORM cascade delete for BackupLog and BackupStorageSync (#67)
Serph91P Mar 4, 2026
0eae4ab
Fix/backup delete cascade (#68)
Serph91P Mar 4, 2026
fcce703
fix: widen StorageBrowser panel from max-w-xl to max-w-3xl (#69)
Serph91P Mar 4, 2026
986ad46
feat: fix delete_local_after_sync support and improve remote browse U…
Serph91P Mar 4, 2026
64999cc
fix: derive tar mode from original filename when browsing encrypted b…
Serph91P Mar 10, 2026
705d560
chore(deps): Bump docker/build-push-action from 6 to 7 (#74)
dependabot[bot] Mar 10, 2026
5db8f0b
chore(deps): Bump docker/login-action from 3 to 4 (#73)
dependabot[bot] Mar 10, 2026
78280b3
chore(deps): Bump docker/metadata-action from 5 to 6 (#72)
dependabot[bot] Mar 10, 2026
9ecd3ec
chore(deps): Bump the npm-minor group in /frontend with 2 updates (#75)
dependabot[bot] Mar 10, 2026
2afd08b
Fix/hadolint warnings (#79)
Serph91P Mar 10, 2026
5c88dc9
chore: update all dependencies to latest versions
Serph91P Mar 10, 2026
599bb73
chore(deps): Bump actions/setup-node from 4 to 6 (#81)
dependabot[bot] Mar 13, 2026
cc96665
chore(deps): Bump github/codeql-action from 3 to 4 (#80)
dependabot[bot] Mar 13, 2026
5a24762
chore(deps): Bump aquasecurity/trivy-action from 0.28.0 to 0.35.0 (#82)
dependabot[bot] Mar 13, 2026
d4a0cce
ci: unify versioning with conventional commits auto-bump (#88)
Serph91P Mar 15, 2026
93647d2
chore(deps): Bump the npm-minor group across 1 directory with 16 upda…
dependabot[bot] Apr 13, 2026
1b1b553
chore(deps): Bump actions/github-script from 7 to 8 (#92)
dependabot[bot] Apr 13, 2026
dccf897
chore(deps): Bump actions/upload-artifact from 4 to 7 (#91)
dependabot[bot] Apr 13, 2026
bce5447
chore(deps): Bump docker/setup-buildx-action from 3 to 4 (#90)
dependabot[bot] Apr 13, 2026
3d59154
chore(deps): Bump @eslint/js from 9.39.3 to 10.0.1 in /frontend (#84)
dependabot[bot] Apr 13, 2026
74d7b28
chore(deps): Bump @vitejs/plugin-react from 5.1.4 to 6.0.0 in /fronte…
dependabot[bot] Apr 13, 2026
9eaf7f4
fix: derive tar mode from original filename when browsing encrypted b…
Serph91P Apr 13, 2026
115c7fc
chore(deps): Bump vite from 7.3.1 to 8.0.0 in /frontend (#85)
dependabot[bot] Apr 13, 2026
cdfdb5c
fix: resolve merge conflicts and pin apt-get package versions in Dock…
Copilot Apr 13, 2026
502ea7d
fix(docker): merge main into develop, pin apt-get package versions
Copilot Apr 13, 2026
258713b
merge: incorporate main branch changes into develop
Copilot Apr 13, 2026
cbb4929
fix(docker): add trailing newline to Dockerfile
Copilot Apr 13, 2026
457f3b0
fix(docker): remove stale apt-get version pins that broke CI builds
Copilot Apr 13, 2026
42909d6
chore(deps): Bump softprops/action-gh-release from 2 to 3
dependabot[bot] Apr 20, 2026
09693bb
chore(deps): Bump codecov/codecov-action from 5 to 6
dependabot[bot] Apr 20, 2026
76c242a
chore(deps): Bump actions/github-script from 8 to 9
dependabot[bot] Apr 20, 2026
8112884
chore(deps): Bump jsdom from 28.1.0 to 29.0.2 in /frontend
dependabot[bot] Apr 20, 2026
c0ecd17
chore(deps): Bump lucide-react from 0.577.0 to 1.8.0 in /frontend
dependabot[bot] Apr 20, 2026
71c3182
chore(deps): Update pytest-cov requirement in /backend
dependabot[bot] Apr 27, 2026
6c50942
chore(deps): Update fastapi requirement in /backend
dependabot[bot] Apr 27, 2026
7c909e7
chore(deps): Update pydantic-settings requirement in /backend
dependabot[bot] Apr 27, 2026
b503d64
chore(deps): Update python-dateutil requirement in /backend
dependabot[bot] Apr 27, 2026
84be582
chore(deps): Update sqlalchemy requirement in /backend
dependabot[bot] Apr 27, 2026
ddb5113
fix(backup): make tar worker subprocess timeout configurable
Serph91P Apr 27, 2026
58c980c
fix(storage): stream uploads to remote storage instead of buffering i…
Serph91P Apr 27, 2026
0eb55b4
fix(backup): encrypt backups atomically via .tmp swap
Serph91P Apr 27, 2026
2065c4b
fix(db): recover orphaned RUNNING backups on startup
Serph91P Apr 27, 2026
6972871
Merge pull request #111 from Serph91P/feat/stability-security-hardening
Serph91P Apr 27, 2026
e2f22ba
fix(docker): allow long-running backups to drain on container stop
Serph91P Apr 27, 2026
94c5156
fix(storage): webdav uploads — eliminate async-generator race + clear…
Serph91P Apr 28, 2026
9c7d876
fix(storage): ssh trust-on-first-use + persistent known_hosts
Serph91P Apr 28, 2026
e068f0b
feat(storage): support password authentication for SSH/SFTP remotes
Serph91P Apr 28, 2026
2b9c4c9
feat(storage): generate SSH keypairs and install them on remote SFTP …
Serph91P Apr 28, 2026
059ebf1
Merge pull request #112 from Serph91P/feat/stability-security-hardening
Serph91P Apr 28, 2026
b684030
feat(storage): pick ssh key from dropdown and use sftp probe for rest…
Serph91P Apr 28, 2026
5732cc8
Merge pull request #113 from Serph91P/feat/stability-security-hardening
Serph91P Apr 28, 2026
dd062d4
fix(storage): make ssh upload work on chrooted/restricted endpoints
Serph91P Apr 28, 2026
91f706e
Merge pull request #114 from Serph91P/feat/stability-security-hardening
Serph91P Apr 28, 2026
2fbbb55
fix(storage): normalize hetzner ssh paths to account-root relative paths
Serph91P Apr 28, 2026
0b2c6b4
Merge pull request #115 from Serph91P/feat/stability-security-hardening
Serph91P Apr 28, 2026
3065ad7
fix(backup): improve error handling and logging for backup sync results
Serph91P Apr 29, 2026
ac8672a
feat(storage): enhance upload methods to return success status and er…
Serph91P Apr 29, 2026
b417a42
fix(backup): improve error handling and logging for remote sync uploads
Serph91P Apr 29, 2026
05b95b9
feat(storage): add storage settings API endpoints for retrieval and u…
Serph91P Apr 29, 2026
1d016b8
feat(settings): add storage settings API endpoints for retrieval and …
Serph91P Apr 29, 2026
6fd17d0
feat(storage): add storage settings card with upload behavior options
Serph91P Apr 29, 2026
e5e381c
fix(storage): streamline quota check retrieval before upload
Serph91P Apr 29, 2026
0d7933c
Merge pull request #116 from Serph91P/feat/stability-security-hardening
Serph91P Apr 29, 2026
76bd16c
feat(storage): add local file management endpoints for backup operations
Serph91P Apr 29, 2026
6299876
feat(storage): add bulk file operations for local and remote storage
Serph91P Apr 29, 2026
d731a0b
feat(ui): update navigation label for storage to include local and re…
Serph91P Apr 29, 2026
294a4f7
feat(storage): implement bulk file operations for local and remote st…
Serph91P Apr 29, 2026
3a4e8eb
feat(storage): enhance local backup functionality and UI updates
Serph91P Apr 29, 2026
9196535
Merge pull request #117 from Serph91P/feat/stability-security-hardening
Serph91P Apr 29, 2026
74e474a
Merge pull request #109 from Serph91P/dependabot/pip/backend/develop/…
Serph91P Apr 29, 2026
b535a47
Merge pull request #108 from Serph91P/dependabot/pip/backend/develop/…
Serph91P Apr 29, 2026
6ea3dc4
Merge pull request #107 from Serph91P/dependabot/pip/backend/develop/…
Serph91P Apr 29, 2026
ff9e26a
Merge pull request #106 from Serph91P/dependabot/pip/backend/develop/…
Serph91P Apr 29, 2026
d0101b0
Merge pull request #105 from Serph91P/dependabot/pip/backend/develop/…
Serph91P Apr 29, 2026
78059ce
Merge pull request #102 from Serph91P/dependabot/npm_and_yarn/fronten…
Serph91P Apr 29, 2026
cb306da
Merge pull request #101 from Serph91P/dependabot/npm_and_yarn/fronten…
Serph91P Apr 29, 2026
6e22958
Merge pull request #99 from Serph91P/dependabot/github_actions/develo…
Serph91P Apr 29, 2026
4f5507b
Merge pull request #98 from Serph91P/dependabot/github_actions/develo…
Serph91P Apr 29, 2026
a7299cb
Merge pull request #97 from Serph91P/dependabot/github_actions/develo…
Serph91P Apr 29, 2026
873bbe7
fix: reject backups for disabled targets
Serph91P Jul 10, 2026
58fd12e
merge: update branch from develop
Serph91P Jul 10, 2026
590e658
ci: harden runtime image contract
Serph91P Jul 10, 2026
3bfddb6
fix: fail closed on backup lifecycle errors
Serph91P Jul 10, 2026
abfb34e
ci: make npm pin statically verifiable
Serph91P Jul 10, 2026
4742cf8
Merge pull request #136 from Serph91P/fix/dv-disabled-target-enforcement
Serph91P Jul 10, 2026
c345ccf
Merge remote-tracking branch 'origin/develop' into fix/dv-ci-runtime-…
Serph91P Jul 10, 2026
589ff4e
Merge pull request #137 from Serph91P/fix/dv-ci-runtime-contract
Serph91P Jul 10, 2026
eb8f20b
Merge remote-tracking branch 'origin/develop' into fix/dv-fail-closed…
Serph91P Jul 10, 2026
262443a
fix: harden fail-closed backup safety
Serph91P Jul 10, 2026
e5dc20f
Merge pull request #139 from Serph91P/fix/dv-fail-closed-backup-safety
Serph91P Jul 11, 2026
3917efa
docs: define storage recovery and Komodo design
Serph91P Jul 11, 2026
89dcba2
docs: add storage recovery implementation plan
Serph91P Jul 11, 2026
2e88f75
docs: clarify recovery envelope contract
Serph91P Jul 11, 2026
eea44ed
Merge pull request #140 from Serph91P/docs/dockervault-recovery-stora…
Serph91P Jul 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Source control and worktrees
.git
.git/**
.worktrees/

# Graphify artifacts
.graphify/
.graphifyignore
graphify-out/

# Dependency environments
**/.venv/
**/venv/
**/env/
**/ENV/
**/node_modules/

# Coverage, caches, and generated Python files
**/.coverage
**/.coverage.*
**/coverage/
**/htmlcov/
**/.cache/
**/.npm/
**/.nox/
**/.tox/
**/.mypy_cache/
**/.pytest_cache/
**/.ruff_cache/
**/.vite/
**/.eslintcache
**/__pycache__/
**/*.py[cod]

# Build outputs
**/build/
**/dist/
**/out/
**/.next/
**/*.egg-info/
**/wheels/

# Secrets and local configuration
**/.env
**/.env.*
!**/.env.example
**/.npmrc
**/.pypirc
**/.secrets/
**/secrets/
**/*credentials*.json
**/*.key
**/*.pem
**/id_ed25519*
**/id_rsa*

# Local application data and logs
/backups/
/data/
/backend/data/
**/*.db
**/*.sqlite
**/*.sqlite3
**/*.log
**/logs/
9 changes: 6 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
steps:
- name: Wait for Tests workflow
id: check
uses: actions/github-script@v8
uses: actions/github-script@v9
with:
script: |
// Wait up to 10 minutes for Tests workflow to complete
Expand Down Expand Up @@ -222,6 +222,9 @@ jobs:
with:
ref: ${{ github.event.workflow_run.head_sha || github.sha }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4

Expand All @@ -236,7 +239,7 @@ jobs:
uses: docker/build-push-action@v7
with:
context: .
platforms: linux/amd64
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ needs.prepare.outputs.docker_tags }}
labels: ${{ needs.prepare.outputs.docker_labels }}
Expand Down Expand Up @@ -365,7 +368,7 @@ jobs:
cat release_notes.md

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || format('v{0}', needs.prepare.outputs.version) }}
target_commitish: ${{ github.sha }}
Expand Down
42 changes: 25 additions & 17 deletions .github/workflows/security-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ permissions:

jobs:
# ──────────────────────────────────────────────
# Python SAST Bandit
# Python SAST - Bandit
# ──────────────────────────────────────────────
bandit:
name: Bandit (Python SAST)
Expand All @@ -25,20 +25,22 @@ jobs:

- uses: actions/setup-python@v6
with:
python-version: '3.14'
python-version-file: '.python-version'

- name: Install Bandit
run: pip install bandit[toml]
run: |
python -m pip install --upgrade pip==25.3
pip install bandit[toml]

- name: Run Bandit scan
continue-on-error: true
run: |
bandit -r backend/app \
-f json \
-o bandit-results.json \
--severity-level medium \
--confidence-level medium \
-x 'backend/app/__pycache__' \
|| true
-x 'backend/app/__pycache__'

- name: Display results
if: always()
Expand All @@ -56,7 +58,7 @@ jobs:
retention-days: 30

# ──────────────────────────────────────────────
# Python dependency audit pip-audit
# Python dependency audit - pip-audit
# ──────────────────────────────────────────────
pip-audit:
name: pip-audit (Python Dependencies)
Expand All @@ -66,18 +68,20 @@ jobs:

- uses: actions/setup-python@v6
with:
python-version: '3.14'
python-version-file: '.python-version'

- name: Install pip-audit
run: pip install pip-audit
run: |
python -m pip install --upgrade pip==25.3
pip install pip-audit

- name: Run pip-audit
continue-on-error: true
run: |
pip-audit \
-r backend/requirements.txt \
--format json \
--output pip-audit-results.json \
|| true
--output pip-audit-results.json

- name: Display results
if: always()
Expand All @@ -95,7 +99,7 @@ jobs:
retention-days: 30

# ──────────────────────────────────────────────
# JavaScript dependency audit npm audit
# JavaScript dependency audit - npm audit
# ──────────────────────────────────────────────
npm-audit:
name: npm audit (JS Dependencies)
Expand All @@ -105,18 +109,22 @@ jobs:

- uses: actions/setup-node@v6
with:
node-version: '24'
node-version-file: '.node-version'
cache: 'npm'
cache-dependency-path: frontend/package-lock.json

- name: Install pinned npm
working-directory: frontend
run: npm install --global "$(node -p "require('./package.json').packageManager")"

- name: Install dependencies
working-directory: frontend
run: npm ci

- name: Run npm audit
working-directory: frontend
run: |
npm audit --json > npm-audit-results.json 2>&1 || true
continue-on-error: true
run: npm audit --json > npm-audit-results.json 2>&1

- name: Display results
if: always()
Expand All @@ -135,7 +143,7 @@ jobs:
retention-days: 30

# ──────────────────────────────────────────────
# Container image scanning Trivy
# Container image scanning - Trivy
# ──────────────────────────────────────────────
trivy:
name: Trivy (Container Scan)
Expand Down Expand Up @@ -172,7 +180,7 @@ jobs:
exit-code: '0'

# ──────────────────────────────────────────────
# Dockerfile linting Hadolint
# Dockerfile linting - Hadolint
# ──────────────────────────────────────────────
hadolint:
name: Hadolint (Dockerfile Lint)
Expand All @@ -196,7 +204,7 @@ jobs:
category: 'hadolint'

# ──────────────────────────────────────────────
# Secret scanning Gitleaks
# Secret scanning - Gitleaks
# ──────────────────────────────────────────────
gitleaks:
name: Gitleaks (Secret Detection)
Expand Down
Loading
Loading