Skip to content

File Tracking Panel Redesign - #257

Merged
5cript merged 114 commits into
mainfrom
feat/file-tracking-panel-redesign
Oct 25, 2026
Merged

5cript merged 114 commits into
mainfrom
feat/file-tracking-panel-redesign

Conversation

@5cript

@5cript 5cript commented Oct 25, 2026

Copy link
Copy Markdown
Owner

Complete Redesign of the File Tracking Panel. Showing Errors and Conflicts as well as progress.

5cript added 30 commits October 24, 2026 14:29
…phans

- TrackedEntry carries its local path, whether it is a directory, its stop and its instance
- WatchEndReason gained Overlap
…d copies

- FrontendTrackerView emits onConflict, onConflictRemoved, onFailure, onFailureRemoved, onWatchProgress and
  onOrphanedCopies
- UploadEnd carries the failure and the entries a directory upload left out
- BatchingRemote hands each upload's progress to the inner remote, a bulk's by entry index
- The tracker and the session's remote pass and take empty callbacks for now
- whenProgressing stores the observer until the operation completes, nothing calls it yet
…stubs

- The tracker's new public methods only log that they are not implemented yet
- Progress reported while a batch works is held back and handed on before that batch's completions, instead of
  being posted behind them, so the last progress of an operation no longer arrives after its end.
- Single transfers, archives and bulks call the progress observer beside the frontend event, on the strand.
- dropAll forgets the observers of the dropped operations.
- A single upload and download, a directory upload and a bulk upload rise to their totals before their end.
- Nothing reaches an observer after its end, also when it stops its own upload, and none hears another's progress.
…heir file

- The error carries the system's message as extra info
- A big file transfer that cannot read fails with that error on its next step instead of CannotWorkFailedOperation
5cript added 23 commits October 24, 2026 19:58
…rontend

- Log::Toast {Show, Skip}; log, warn, error and critical take it first, the old signatures show the toast
- The backend sends it with the log RPC and keeps it in the stash, the frontend skips its hooks for Skip
…ts them

- addUploadOperation and addBulkUploadOperation take a failureToast, which the upload, bulk and scan options carry
- The queue logs "Operation failed" of such an operation without a toast; FileTrackingRemote passes Skip
…es up

- ProtoSession, FrontendSessionManager::open and TerminalEngine::open take a failureToast
- SessionManager::connect reads showFailureToast and logs its connect errors with it
- SessionArea skips it for every attempt but the last one that maxReconnectAttempts allows
- dropProblems hides what removeWatch returns instead of copying the lists first
- Answer All, Retry All, Dismiss All, a stop and a directory upload's cleared failures each send one message
- TrackingModel: a ProblemList per watch and kind, id to watch lookups, running totals; counts are O(1)
- TrackingStore: rows of the current page only (100), batch removals, conflict and failure page setters
- TrackerClient: onConflictsRemoved/onFailuresRemoved, one setTimeout sync per burst of events
- Coalescing the syncs of a burst crashed the page: Nui's range tracking lost its place when erase and insert
  pairs of the page rows piled up between syncs (Element::erase past the end of the children)
- A page holds at most 100 rows, so one sync per event stays cheap: 2,000 failures list in 5 s, 10,000 in 44 s
…ui v3.7.3

Reverts 57a4c58: Nui v3.7.3 tracks erases over pending inserts correctly, so erase and insert pairs may pile up
between syncs again.
…d safer

- Count pending changes on the progress show during a burst, not on every event
- Keep the orphan list in the instance manager, rescanned when the panel asks
- Tell upload generations apart in the progress meter so a late end keeps the new one
- Take isDirectory from the local watch instead of a stat per shown entry
- Carry the download size in the entry so Open Again keeps the big-file path
@5cript
5cript enabled auto-merge (rebase) October 25, 2026 00:56
@5cript
5cript disabled auto-merge October 25, 2026 01:12
- FSEvents may not report a change below a directory no one can look into, so on macOS the failure never came
- The second save of main.cpp now waits for the upload of the first and finds src closed when its turn comes
@5cript
5cript enabled auto-merge (rebase) October 25, 2026 01:29
auto-merge was automatically disabled October 25, 2026 01:57

Rebase failed

@5cript
5cript merged commit 09b3bed into main Oct 25, 2026
3 checks passed
@5cript 5cript mentioned this pull request Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant