Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1030 commits
Select commit Hold shift + click to select a range
ef23175
Fix integration tests and add unit tests
karanhudia Jan 24, 2026
6a103e1
Update screenshot link in README.md
karanhudia Jan 24, 2026
4560658
Fix frontend lint errors (unused variables)
karanhudia Jan 24, 2026
4aea1f4
Fix integration test event loop and frontend lint
karanhudia Jan 24, 2026
096c451
chore: prettier fix
karanhudia Jan 24, 2026
afeb208
chore: remove empty space above dashboard tab
karanhudia Jan 24, 2026
9764fd0
chore: undo event loop fixture
karanhudia Jan 25, 2026
3148140
fix: respect analytics opt-out and implement privacy-first defaults
karanhudia Jan 25, 2026
64ecaba
Add unit tests for utils (datetime, process)
karanhudia Jan 25, 2026
7fdc6cd
feat: add comprehensive CronBuilder with proper timezone handling
karanhudia Jan 26, 2026
a828fe9
feat: improve remote-to-local backup with SSHFS mount and cleaner arc…
karanhudia Jan 26, 2026
00568d9
chore: prettier formatting fixes and bump version to 1.53.0
karanhudia Jan 26, 2026
3ecf113
fix: add missing React imports for CI linting
karanhudia Jan 26, 2026
36dd4e3
test: add CommandPreview tests to meet branch coverage threshold
karanhudia Jan 26, 2026
4ac2153
chore: fix prettier check
karanhudia Jan 26, 2026
a746429
fix: add padding to wizard content to prevent label clipping
karanhudia Jan 26, 2026
fc43e8a
fix: support restricted shells for SSH storage info collection
karanhudia Jan 27, 2026
539ce01
fix: wizard step mapping and add comprehensive tests
karanhudia Jan 27, 2026
23928ef
fix: dashboard repo health filtering and stats refresh time format
karanhudia Jan 27, 2026
b90c07d
test: add comprehensive frontend component tests
karanhudia Jan 27, 2026
218ea48
feat: add environment variables for pre/post backup scripts
karanhudia Jan 27, 2026
5257d38
fix: resolve pytest-asyncio event loop closed errors in CI
karanhudia Jan 27, 2026
500eb55
chore: bump version to 1.54.0
karanhudia Jan 27, 2026
7e784dd
fix: allow importing relocated repositories
karanhudia Jan 27, 2026
d625008
chore: bump version to 1.54.1
karanhudia Jan 27, 2026
5048258
feat: prevent mixed local/remote source directories in repository forms
karanhudia Jan 27, 2026
0011da7
refactor: extract wizard steps into separate components with comprehe…
karanhudia Jan 28, 2026
d3e572e
fix: resolve type mismatches in repository interfaces
karanhudia Jan 28, 2026
95f2bce
fix: resolve repository wizard editing issues with type updates and r…
karanhudia Jan 28, 2026
ecd5fe5
Fix DetachedInstanceError in multi-repo schedules and add integration…
karanhudia Jan 28, 2026
977aef9
fix: SSH repository path corruption when editing via wizard
karanhudia Jan 28, 2026
36de42a
chore: add react import
karanhudia Jan 28, 2026
df42534
chore: bump version to 1.55.1
karanhudia Jan 28, 2026
5fa5258
fix: command preview shows incorrect path when switching repository l…
karanhudia Jan 28, 2026
31e698b
feat: initialize borg repository when changing path to non-existent l…
karanhudia Jan 28, 2026
6a71905
fix: add bypass-lock support for file downloads and restores from rea…
karanhudia Jan 29, 2026
a3454ee
chore: bump version to 1.55.2
karanhudia Jan 29, 2026
4b3f4ec
refactor: centralize dialog components and internalize table actions
karanhudia Jan 29, 2026
f16e202
refactor: use connection_id as single source of truth for SSH reposit…
karanhudia Jan 29, 2026
3ef7d86
chore: bump version to 1.56.0
karanhudia Jan 29, 2026
755e171
fix: stale closure bug in Schedule multi-repository management
karanhudia Jan 29, 2026
84069bb
test: add comprehensive functional updater verification
karanhudia Jan 29, 2026
f7793ae
docs: add secure SSHFS configuration alternatives to privileged mode
karanhudia Jan 29, 2026
32c29de
fix: add node types to tsconfig for test file system access
karanhudia Jan 29, 2026
cf75da4
chore: fix prettier check
karanhudia Jan 29, 2026
9248f05
feat: simplify notification JSON feature - automatic for json:// webh…
karanhudia Jan 30, 2026
3575b65
feat: add admin-only job deletion functionality
karanhudia Jan 30, 2026
9d5b8ab
feat: add job name support to backup and restore notification calls
karanhudia Jan 30, 2026
909b57d
chore: fix prettier check
karanhudia Jan 30, 2026
3c2e466
fix: resolve Jekyll build issues in notifications.md
karanhudia Jan 30, 2026
db22c67
fix: resolve frontend test linting issues
karanhudia Jan 30, 2026
15cc686
chore: fix prettier check
karanhudia Jan 30, 2026
87947c6
fix: escape Liquid template syntax in notifications.md
karanhudia Jan 30, 2026
38cc51e
chore: bump version to 1.57.0
karanhudia Jan 30, 2026
2d10a3d
feat: add per-connection SFTP mode configuration for SSH key deployment
karanhudia Jan 30, 2026
c757147
chore: bump version to 1.58.0
karanhudia Jan 30, 2026
c583066
feat: add speed and ETA tracking to restore jobs
karanhudia Jan 30, 2026
695e761
chore: bump version to 1.59.0
karanhudia Jan 30, 2026
2a5f40d
test: add comprehensive tests for restore speed and ETA tracking
karanhudia Jan 30, 2026
ac2d969
fix: restore logs accessibility in Activity page and API
karanhudia Jan 30, 2026
b6527e7
feat: add actions (view/download logs, error info) to restore jobs table
karanhudia Jan 30, 2026
24deca8
test: add missing useAuth mock in Restore speed-eta tests
karanhudia Jan 30, 2026
b1d4f58
fix: show view/download logs icons and adjust column widths in restor…
karanhudia Jan 30, 2026
d881e29
fix: resolve duplicate React key warnings in restore jobs lists
karanhudia Jan 30, 2026
964c2d6
fix: resolve duplicate React key warnings and TypeScript errors in lo…
karanhudia Jan 30, 2026
049f239
fix: resolve React Hook rules violation and lint errors in tests
karanhudia Jan 30, 2026
fed42c9
feat: add beta setting to enable bypass-lock for all borg info commands
karanhudia Jan 31, 2026
0204b5e
feat: add Prometheus metrics endpoint for monitoring with Grafana
karanhudia Jan 31, 2026
c476bdf
chore: bump version to 1.60.0
karanhudia Jan 31, 2026
96d0881
fix: resolve scheduled jobs stuck in pending with NULL timestamps
karanhudia Feb 2, 2026
5a306ac
docs: restructure README and change license to AGPL-3.0
karanhudia Feb 2, 2026
a170068
Update README with new images and sections
karanhudia Feb 2, 2026
8bc60d1
docs: enhance screenshot descriptions and update Discord invite
karanhudia Feb 2, 2026
4773591
chore: bump version to 1.61.0
karanhudia Feb 2, 2026
11a92fc
fix: prevent duplicate repository IDs in schedule dialog
karanhudia Feb 2, 2026
6b52a53
fix: preserve original paths in SSHFS remote backups to fix exclude p…
karanhudia Feb 2, 2026
af83305
fix: show exclude patterns for remote sources in repository wizard
karanhudia Feb 2, 2026
750a1c3
feat: add repository sorting, grouping, and search functionality
karanhudia Feb 2, 2026
64ae75d
fix: improve group by options and remove icon clutter in sort dropdown
karanhudia Feb 2, 2026
27131a3
chore: fix prettier check
karanhudia Feb 2, 2026
0808711
chore: bump version to 1.62.0
karanhudia Feb 2, 2026
7eb82d9
fix: consistent 16px padding in filter bar to match rest of UI
karanhudia Feb 2, 2026
5971a22
fix: handle root directory (/) path in SSHFS remote backups
karanhudia Feb 3, 2026
967234d
fix: allow deleting pending backup jobs to clean up stuck jobs
karanhudia Feb 3, 2026
9494c7b
fix: update last_login timestamp when users log in
karanhudia Feb 3, 2026
11a7866
chore: fix tests
karanhudia Feb 3, 2026
23a096e
fix: enable keyfile upload for repository import
karanhudia Feb 3, 2026
cb45699
security: update vulnerable dependencies to fixed versions
karanhudia Feb 3, 2026
917345a
feat: add automated dependency management and security scanning
karanhudia Feb 3, 2026
0186d95
fix: resolve security workflow permissions and exit codes
karanhudia Feb 3, 2026
0630a0a
fix: ignore known Python 3.9 vulnerabilities in pip-audit
karanhudia Feb 3, 2026
f000d58
fix: ignore Python 3.10+ packages in Dependabot
karanhudia Feb 3, 2026
d91f224
security: update fastapi to 0.118.0 to fix starlette CVEs
karanhudia Feb 3, 2026
8fa5070
chore: bump version to 1.63.0
karanhudia Feb 3, 2026
f99aa90
fix: implement optimistic UI updates for job deletion
karanhudia Feb 3, 2026
35e8634
feat: add pagination to DataTable component
karanhudia Feb 3, 2026
8714e5f
feat: implement optimistic UI updates and pagination for activity tables
karanhudia Feb 3, 2026
25f36a9
fix: make pagination permanent and fix vertical alignment
karanhudia Feb 3, 2026
fbd7b04
fix: remove 10-item limit and improve pagination styling
karanhudia Feb 3, 2026
a34a9f0
fix: implement fixed table layout to prevent column width shifts
karanhudia Feb 3, 2026
f030354
fix: reduce column widths to prevent table overflow and scrolling
karanhudia Feb 3, 2026
7c092d0
fix: apply text ellipsis to repository name when path is used as fall…
karanhudia Feb 3, 2026
af260b8
feat: persist rows per page setting per tab in localStorage
karanhudia Feb 3, 2026
1ee0fc7
chore: fix tsc
karanhudia Feb 3, 2026
db64671
chore: bump version to 1.64.0
karanhudia Feb 3, 2026
c5d1afc
docs: Add more documentation for borg fuse support. (#231)
DavidBerdik Feb 3, 2026
b2aa432
feat: Add script parameters support (#245)
karanhudia Feb 3, 2026
bcf1b7a
fix: improve script parameters implementation
karanhudia Feb 3, 2026
1e138d6
fix: remove Type icon and hide auto-generated parameter descriptions
karanhudia Feb 3, 2026
8e2975f
fix: resolve 'repository_id is not defined' error in script execution
karanhudia Feb 3, 2026
40f5d03
fix: show raw parameter names and improve description filtering
karanhudia Feb 3, 2026
222aaa7
fix: replace 'any' types with proper TypeScript types in BackupJobsTable
karanhudia Feb 3, 2026
43b860f
test: update generate_description tests to match new behavior
karanhudia Feb 3, 2026
8a21ecf
fix: properly handle Borg exit code 1 as warnings instead of failures
karanhudia Feb 3, 2026
0c40ff6
feat: add Schedule Wizard with step-based UI and component extraction
karanhudia Feb 4, 2026
5e98e66
chore: fix prettier
karanhudia Feb 4, 2026
d5316ee
docs: simplify documentation and add logo to README
karanhudia Feb 4, 2026
c817cdd
chore: use actual logo
karanhudia Feb 4, 2026
fc23699
chore: add logo with name
karanhudia Feb 4, 2026
bb6eade
chore: add logo with name white color
karanhudia Feb 4, 2026
e6c3940
chore: update image
karanhudia Feb 4, 2026
9159b6f
Update logo in README
karanhudia Feb 4, 2026
e79a820
chore: bump version to 1.65.0
karanhudia Feb 4, 2026
3606641
docs: fix Redis password authentication instructions
karanhudia Feb 5, 2026
b0a1b67
refactor: extract 8 reusable components from Archives page
karanhudia Feb 9, 2026
fb4a28a
fix: improve RestoreJobCard alignment and duration display
karanhudia Feb 9, 2026
0090705
feat: add beta toggle to show/hide legacy Restore tab
karanhudia Feb 9, 2026
c9fad4f
style: apply prettier formatting to extracted components
karanhudia Feb 9, 2026
27bf730
feat: add pagination to archives list
karanhudia Feb 9, 2026
161e5b5
fix: prevent empty backups when mounting multiple SSH paths
karanhudia Feb 9, 2026
de4d00e
feat: show logs icon for running backups
karanhudia Feb 9, 2026
80079f9
fix: allow deleting pending jobs in backend API
karanhudia Feb 9, 2026
9e9fcbf
feat: add comprehensive logging for schedule creation debugging
karanhudia Feb 9, 2026
14c0964
fix: handle race condition when deleting pending jobs
karanhudia Feb 9, 2026
191ec52
fix: distinguish empty log buffer from non-existent buffer
karanhudia Feb 9, 2026
2a5be15
feat: add edit functionality for package install scripts
karanhudia Feb 9, 2026
90babd2
fix: webhook notifications showing repository path instead of name
karanhudia Feb 9, 2026
5791882
chore: fix prettier
karanhudia Feb 9, 2026
fb99250
fix: CI frontend test and TypeScript errors
karanhudia Feb 9, 2026
a0fed55
debug: add borg exit code logging for lock errors
karanhudia Feb 9, 2026
5d9da06
fix: correct Borg lock error exit codes (70-75, not 15)
karanhudia Feb 9, 2026
e3a5d20
fix: remove fuzzy text matching for lock detection, use only exit codes
karanhudia Feb 9, 2026
747d4ca
docs: add comprehensive Borg exit code documentation
karanhudia Feb 9, 2026
c727aa7
fix: simplify lock error UX - remove intrusive modal, add dialog to b…
karanhudia Feb 9, 2026
8f4307c
fix: resolve CI linting errors - add missing imports and fix type ann…
karanhudia Feb 9, 2026
f65b541
chore: bump version to 1.66.0
karanhudia Feb 9, 2026
654b0d1
chore: remove old screenshots
karanhudia Feb 10, 2026
13ea446
fix: resolve schedule duplicate repository and deletion issues
karanhudia Feb 11, 2026
7d1ee9f
fix: resolve mount cleanup and file selection issues
karanhudia Feb 11, 2026
266c9c4
chore: fix prettier
karanhudia Feb 11, 2026
ea01765
chore: bump version to 1.66.1
karanhudia Feb 11, 2026
74a5165
fix: resolve mount cleanup hanging and duplicate unmount attempts
karanhudia Feb 12, 2026
a62b25d
fix: command preview now correctly shows parent directory mounts for …
karanhudia Feb 12, 2026
6795e19
feat: add View Logs button to running backup jobs
karanhudia Feb 12, 2026
e7bb99d
fix: repository deletion blocked by foreign key constraints
karanhudia Feb 12, 2026
cdb3e00
test: add comprehensive tests for repository deletion
karanhudia Feb 12, 2026
51a78d4
fix: RestoreJob uses repository path not repository_id
karanhudia Feb 12, 2026
a9b3a88
fix: BackupJob uses repository path not repository_id
karanhudia Feb 12, 2026
a0d5c51
feat: add migration for SSH path prefix
karanhudia Feb 12, 2026
14e59ec
feat: add SSH path prefix support to backend
karanhudia Feb 12, 2026
86adfa8
feat: add SSH path prefix UI to connection management
karanhudia Feb 12, 2026
4b81244
fix: pass backup_status to get_system_variables in script execution
karanhudia Feb 12, 2026
b5848dc
fix: exclude system variables from required parameters
karanhudia Feb 12, 2026
1acf3e3
fix: exclude pattern browser now matches data source type
karanhudia Feb 12, 2026
6f9cba3
fix: save ssh_path_prefix when updating existing SSH connections
karanhudia Feb 12, 2026
a5539ae
fix: include ssh_path_prefix in get_ssh_connections response
karanhudia Feb 12, 2026
4395731
chore: temporarily disable SSH path prefix UI field
karanhudia Feb 12, 2026
38e9896
chore: bump version to 1.67.0
karanhudia Feb 12, 2026
939a651
chore: fix prettier check
karanhudia Feb 12, 2026
a0841be
fix: set BORG_UI_ prefixed variables in get_system_variables()
karanhudia Feb 13, 2026
d8c9757
fix: update SYSTEM_VARIABLES to only include BORG_UI_ prefixed vars
karanhudia Feb 13, 2026
db56116
fix: filter system variables from API responses and fix test endpoint
karanhudia Feb 13, 2026
3449386
fix: prevent system variables from being overwritten by parameter pro…
karanhudia Feb 13, 2026
1ac8dc8
fix: add BORG_UI_ variables to schedule-level script execution
karanhudia Feb 13, 2026
dc7f776
fix: add CASCADE delete to script_executions foreign key
karanhudia Feb 13, 2026
1f52599
test: add mount service integration tests
karanhudia Feb 13, 2026
3218f1c
chore: bump version to 1.67.1
karanhudia Feb 13, 2026
c235e77
feat: add remote restore functionality with SSH support
karanhudia Feb 14, 2026
8297a07
fix: update test mocks to match run_script_from_library signature
karanhudia Feb 14, 2026
d1c4bda
fix: remove keep_daily parameter from PruneJob test creation
karanhudia Feb 14, 2026
0a81d62
chore: bump version to 1.68.0
karanhudia Feb 14, 2026
b77846a
chore: organize repository structure
karanhudia Feb 16, 2026
eb8c7e1
chore: remove outdated documentation files
karanhudia Feb 16, 2026
f202421
chore: update CI workflow to use new test_app.py path
karanhudia Feb 16, 2026
34a8efc
chore: update CI workflow to use new test_app.py path
karanhudia Feb 16, 2026
29b791c
fix: update dependencies to resolve security vulnerabilities
karanhudia Feb 16, 2026
4b7c684
chore(deps): bump cryptography from 44.0.1 to 46.0.5
dependabot[bot] Feb 16, 2026
517a02e
ci: add Dependabot configuration for automated dependency updates
karanhudia Feb 16, 2026
b110bdb
ci(deps): bump actions/download-artifact from 4 to 7
dependabot[bot] Feb 16, 2026
af3de3f
ci(deps): bump peter-evans/dockerhub-description from 4 to 5
dependabot[bot] Feb 16, 2026
6afa7c1
chore(deps): bump pytest-cov from 4.1.0 to 7.0.0
dependabot[bot] Feb 16, 2026
9203ca9
chore(deps): bump redis from 5.0.1 to 7.1.1
dependabot[bot] Feb 16, 2026
bd08e02
chore(deps): bump structlog from 23.2.0 to 25.5.0
dependabot[bot] Feb 16, 2026
599ed51
chore(deps-dev): bump jsdom from 27.0.1 to 28.1.0 in /frontend
dependabot[bot] Feb 16, 2026
2ced44b
chore(deps): bump @eslint/js from 9.39.1 to 10.0.1 in /frontend
dependabot[bot] Feb 16, 2026
ad29fa6
feat: add proxy authentication support (SSO integration)
karanhudia Feb 16, 2026
28bba94
fix: prevent critical mount shadowing bug causing data loss on remote…
karanhudia Feb 16, 2026
d1efbbc
feat: add bypass_lock_on_list beta setting for concurrent read operat…
karanhudia Feb 16, 2026
2a96ed9
feat: add archive grouping, sorting, and filtering to improve navigation
karanhudia Feb 16, 2026
539d58a
fix: restore failing with 'Repository' object has no attribute 'ssh_c…
karanhudia Feb 17, 2026
1b53b0f
improve: replace archive filter tabs with dropdown and hide SSH mount…
karanhudia Feb 17, 2026
b7984a9
fix: restore UI issues - missing slash in SSH paths and false failure…
karanhudia Feb 17, 2026
b7f9cc9
fix: remove double slash in SSH custom path preview
karanhudia Feb 17, 2026
5402882
fix: SSH key permission errors causing rsync/restore failures
karanhudia Feb 17, 2026
383ee12
refactor: replace rsync with SSHFS for local→SSH restore
karanhudia Feb 17, 2026
d620798
Revert "refactor: replace rsync with SSHFS for local→SSH restore"
karanhudia Feb 17, 2026
bfd3009
improve: enhance notification system with professional design and met…
karanhudia Feb 17, 2026
24bc154
fix: add missing parameters to send_backup_success signature
karanhudia Feb 17, 2026
76bdb5a
fix: logs not displaying for restore jobs with completed_with_warning…
karanhudia Feb 17, 2026
61ba71a
fix: TypeScript linting errors in unused catch variables
karanhudia Feb 17, 2026
eac8c9c
fix: update notification tests to match text badge format
karanhudia Feb 17, 2026
d34afaa
fix: update auth tests and add coverage for uncovered components
karanhudia Feb 17, 2026
4406c73
test: add comprehensive tests to reach 70% branch coverage
karanhudia Feb 17, 2026
0b87d42
fix: backend test failures for auth status codes and mount integration
karanhudia Feb 17, 2026
241abe8
Merge main to get test fixes
karanhudia Feb 17, 2026
912d0f0
Merge pull request #256 from karanhudia/dependabot/pip/cryptography-4…
karanhudia Feb 17, 2026
a49864f
chore(deps): bump croniter from 1.4.1 to 6.0.0
dependabot[bot] Feb 17, 2026
f457467
chore(deps): bump gunicorn from 23.0.0 to 25.1.0
dependabot[bot] Feb 17, 2026
0fd73b3
Merge branch 'main' into dependabot/github_actions/peter-evans/docker…
karanhudia Feb 17, 2026
f6afe2c
chore: bump version to 1.69.0
karanhudia Feb 17, 2026
db977b6
docs: add comprehensive OIDC/proxy authentication documentation
karanhudia Feb 17, 2026
86b0d87
fix: add pull-requests write permission for security workflow PR comm…
karanhudia Feb 17, 2026
1d27c81
feat: restrict break lock functionality to admin users only
karanhudia Feb 17, 2026
3d4e874
chore: add test
karanhudia Feb 17, 2026
b833c5a
chore(deps): bump @types/node from 24.10.1 to 25.2.3 in /frontend (#286)
dependabot[bot] Feb 17, 2026
6494372
Merge branch 'main' into dependabot/github_actions/actions/download-a…
karanhudia Feb 17, 2026
2f2a178
fix: sanitize SSH URLs in notifications to prevent @ mentions
karanhudia Feb 18, 2026
15124ae
fix: resolve TypeScript linting errors
karanhudia Feb 18, 2026
bb88fea
chore: bump version to 1.69.1
karanhudia Feb 18, 2026
fc41b0a
feat: enable original location restore for SSH destinations and fix r…
karanhudia Feb 19, 2026
ec69e49
docs: restructure installation guide for clarity
karanhudia Feb 19, 2026
4ccc2ad
docs: fix misleading /local mount description in usage guide
karanhudia Feb 20, 2026
a3d0811
feat: track unique Matomo users via hashed installation ID
karanhudia Feb 20, 2026
88af523
chore: prettier fix
karanhudia Feb 22, 2026
91c86ba
chore: bump version to 1.70.0
karanhudia Feb 22, 2026
34227d7
Merge pull request #269 from karanhudia/dependabot/github_actions/act…
karanhudia Feb 22, 2026
576a3a6
Merge pull request #271 from karanhudia/dependabot/github_actions/pet…
karanhudia Feb 22, 2026
0be767d
Merge pull request #282 from karanhudia/dependabot/pip/gunicorn-25.1.0
karanhudia Feb 22, 2026
2978d12
Merge pull request #275 from karanhudia/dependabot/pip/croniter-6.0.0
karanhudia Feb 22, 2026
d2c6f13
chore(deps): bump ajv from 6.12.6 to 6.14.0 in /frontend
dependabot[bot] Feb 22, 2026
6b28618
chore(deps): bump psutil from 5.9.6 to 7.2.2
dependabot[bot] Feb 22, 2026
fc67fe1
chore(deps): bump bcrypt from 4.0.1 to 5.0.0
dependabot[bot] Feb 22, 2026
ffa6227
Merge pull request #276 from karanhudia/dependabot/pip/psutil-7.2.2
karanhudia Feb 22, 2026
ddae09f
Merge pull request #277 from karanhudia/dependabot/pip/pytest-cov-7.0.0
karanhudia Feb 22, 2026
ffd3266
Merge pull request #280 from karanhudia/dependabot/pip/structlog-25.5.0
karanhudia Feb 22, 2026
bc02736
Merge pull request #296 from karanhudia/dependabot/npm_and_yarn/front…
karanhudia Feb 22, 2026
44b56e9
Merge pull request #278 from karanhudia/dependabot/pip/redis-7.1.1
karanhudia Feb 22, 2026
fec490d
Merge pull request #279 from karanhudia/dependabot/pip/bcrypt-5.0.0
karanhudia Feb 22, 2026
5aed023
Merge pull request #284 from karanhudia/dependabot/npm_and_yarn/front…
karanhudia Feb 22, 2026
f342dd5
Merge branch 'main' into dependabot/npm_and_yarn/frontend/eslint/js-1…
karanhudia Feb 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
95 changes: 95 additions & 0 deletions .claude/instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
- **NEVER commit or push without asking first**
- Always run test suite before pushing to github
- Always add a new test or update existing when a new feature is added or a bug is fixed
- Ask every time you push if a release is required, if i answer yes, you decide if minor, major or patch and do it

## Release Process
- Creating a git tag automatically triggers a GitHub release
- Use `git tag vX.Y.Z` to create the tag
- Tag format: semantic versioning (vMAJOR.MINOR.PATCH)
- MAJOR: Breaking changes or major new features
- MINOR: New features, backward compatible
- PATCH: Bug fixes and small improvements
- Push tags with `git push --tags`

## Repository Wizard (New Implementation)

### Overview
Implemented a new step-based wizard for repository creation/import/editing with card-based visual UI.

### Key Components Created
1. **CompressionSettings.tsx** - Reusable compression configuration component
- Handles all compression algorithms (lz4, zstd, zlib, lzma, auto, obfuscate, none)
- Compression levels, auto-detect, obfuscate spec
- Shows final compression string preview

2. **CommandPreview.tsx** - Shows Borg commands that will run
- Init command for create mode
- Create command preview
- Uses existing `generateBorgCreateCommand` utility

3. **SourceDirectoriesInput.tsx** - Manages source directories
- Add/remove directories with validation
- FileExplorerDialog integration
- Warning when no directories configured

4. **ExcludePatternInput.tsx** - Manages exclude patterns
- Add/remove patterns
- FileExplorerDialog integration

### Wizard Structure (RepositoryWizard.tsx)

**Step 1: Repository Location**
- Name and mode (Full/Observe Only)
- Visual cards: Borg UI Server (local) vs SSH Remote Storage
- SSH connections dropdown (no manual host/port entry)
- Path input with file browser

**Step 2: Data Source** (only for full mode, not import/observe)
- Visual cards: Borg UI Server (local) vs Remote Machine
- For local: Shows SourceDirectoriesInput
- For remote: SSH connections dropdown + note about remote execution

**Step 3: Security**
- Encryption (create mode)
- Passphrase (required for encrypted)
- Keyfile upload (import mode)
- Remote path (optional borg executable path)

**Step 4: Backup Configuration** (only for local data source)
- CompressionSettings component
- ExcludePatternInput component
- Custom Borg flags

**Step 5: Review**
- CommandPreview component (local source only)
- Summary card with all settings
- Success/info alerts

### Important Decisions
- **NON-NEGOTIABLE**: Must reuse existing components (FileExplorerDialog, compression logic, command generation)
- **SSH connections dropdown**: Use for both repository location AND data source
- **Card-based UI**: Visual clarity preferred over text-heavy forms
- **Step adaptation**: Steps dynamically adjust based on mode (full/observe/import)
- **Validation**: Array.isArray() checks on sshConnections before .map() calls
- **Client-to-client limitation**: If repository is on a remote client, data source can ONLY be:
- Local (Borg UI Server), OR
- The SAME remote client (same-machine backup)
- Backing up from one remote client to another is NOT supported (too much overhead)

### Integration
- Buttons in Repositories.tsx: "Create Repository (New)", "Import Existing (New)", "Create (Old)"
- Old form still exists for comparison/fallback
- Uses existing FileExplorerDialog, sshKeysAPI.getSSHConnections()

### Data Flow
- Repository location: Where backups are stored (local/SSH)
- Data source: Where data comes from (local/remote machine)
- Remote source submits `source_connection_id` to backend
- Local source submits `source_directories` array

### Current Status
- Frontend complete and deployed
- Backend needs implementation for remote source orchestration (future work)
- Wizard handles create/import/edit modes
- All original features from old form are included
98 changes: 98 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Coverage.py configuration for Borg UI
# https://coverage.readthedocs.io/

[run]
# Source code to measure coverage for
source = app

# Write relative paths in coverage data (required for GitHub Actions)
relative_files = true

# Omit these files from coverage
omit =
*/tests/*
*/test_*.py
*/__pycache__/*
*/node_modules/*
*/venv/*
*/env/*
*/.venv/*
*/migrations/*
*/alembic/*
setup.py
*/site-packages/*

# Enable branch coverage (if statements, loops, etc.)
branch = True

# Measure coverage for code called by subprocess
parallel = False

# Store coverage data in this file
data_file = .coverage

[report]
# Show lines that weren't covered
show_missing = True

# Precision for coverage percentages
precision = 2

# Skip files with 100% coverage in the report
skip_covered = False

# Skip empty files
skip_empty = True

# Fail if coverage is below this percentage
fail_under = 0

# Sort the report by these criteria
sort = Cover

# Exclude these lines from coverage
exclude_lines =
# Have to re-enable the standard pragma
pragma: no cover

# Don't complain about missing debug-only code
def __repr__
def __str__

# Don't complain if tests don't hit defensive assertion code
raise AssertionError
raise NotImplementedError

# Don't complain if non-runnable code isn't run
if __name__ == .__main__.:
if TYPE_CHECKING:
if typing.TYPE_CHECKING:

# Don't complain about abstract methods
@abc.abstractmethod
@abstractmethod

# Don't complain about ellipsis in protocols/stubs
\.\.\.

# Don't complain about pass statements
pass

[html]
# Directory for HTML report
directory = htmlcov

# Title for HTML report
title = Borg UI Coverage Report

[xml]
# Output file for XML report (for CI/CD tools)
output = coverage.xml

[json]
# Output file for JSON report
output = coverage.json

# Pretty print JSON
pretty_print = True
show_contexts = True
25 changes: 25 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,34 @@ PORT=8081
# Environment mode (production/development)
ENVIRONMENT=production

# Timezone configuration (default: host timezone via /etc/localtime mount)
# Set to ensure correct timestamps in archive names and logs
# Common timezones: America/New_York, America/Chicago, America/Los_Angeles,
# Europe/London, Europe/Paris, Asia/Kolkata, Asia/Tokyo
# Full list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=America/Chicago

# Application version (auto-generated in CI/CD, use for local dev)
# APP_VERSION=local-dev

# =============================================================================
# Reverse Proxy Configuration
# =============================================================================

# Base path for running behind reverse proxy in subfolder
# Examples: BASE_PATH=/borg, BASE_PATH=/backup
# Default: / (root path)
# IMPORTANT:
# - Must start with / (e.g., /borg not borg)
# - No trailing slash (e.g., /borg not /borg/)
# - Rebuild required: docker-compose up -d --build
# BASE_PATH=/

# Nginx example:
# location /borg/ {
# proxy_pass http://localhost:8081/;
# }

# =============================================================================
# User/Group ID Configuration (for file permissions)
# =============================================================================
Expand Down
Loading
Loading