Skip to content

Lycidias93/Sortify-Dispatch

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sortify Dispatch v4.7.1-webui-cleanup-hotfix

Release: 4.7.1-webui-cleanup-hotfix / versionCode=25.

This hotfix fixes stale action/status version output after v4.7.0 and exposes Download Cleanup maintenance in WebUI with explicit operator gates.

WebUI coverage: cleanup status, scan, guard, archive-safe, verify, rollback-info, archive-review-approved dry-run, archive-review-approved apply and verify-review-archive.

Safety: APPROVE, ARCHIVE_SAFE and APPLY typed confirmations are required for planning or movement actions; runtime_install=no, new_real_file_move=no, host_run=no, sdd_marker_write=no, dns_ha_vip_route_change=no, sha_sidecar=no for this release step.

Sortify Dispatch v4.7.0-download-cleanup-integration

Release: 4.7.0-download-cleanup-integration / versionCode=24.

This release bundles the Download Cleanup maintenance integration: explicit scan/guard/archive-safe/verify/rollback-info, stale-review planning, archive-review-approved dry-run, gated archive-review-approved apply, and verify-review-archive.

The release is based on the verified real workflow for run_20260629_161212_stale_readonly: planned_items=233, moved_items=233, archive_items=233, source_still_present=0, dest_missing=0, top_level_delta=PASS.

Boundaries: no service/boot/watcher/queue cleanup automation, no runtime install in the release workflow, no SSH/host-run, no SDD marker writes, no DNS/HA/VIP/route changes, and no .sha256 sidecar.

vNext: archive-review-approved apply

Sortify Download cleanup now has a separate archive-review-approved apply command for manually applying a previously verified review archive plan. It requires SORTIFY_CLEANUP_APPLY_REVIEW_ARCHIVE=yes, an exact run id/run dir, and a valid planned_review_archive_manifest.tsv. It writes archive_review_manifest.tsv and rollback_review_archive_<run_id>.sh. verify-review-archive validates the result.

vNext: archive-review-approved dry-run

Sortify Download cleanup now has a planning-only archive-review-approved dry-run command. It requires an explicit run id and SORTIFY_CLEANUP_APPROVED_FOR_ARCHIVE=yes, reads the approval preview, accepts only A/C review candidates, blocks B/D/E, and writes only planned_review_archive_manifest.tsv. It does not move files.

vNext: Download cleanup stale review and rollback info

Sortify Download cleanup maintenance now plans stale_review_candidates.tsv for old-looking pixel_local__* helper artifacts while preserving the local-hold contract. archive-safe still moves only guarded safe candidates. rollback-info reports the latest run, manifest, rollback, archive and items paths. No service, boot, watcher, watchdog or queue integration is added.

vNext: Download cleanup maintenance

Sortify Dispatch has a planned Pixel-local Download cleanup maintenance helper with scan, guard, archive-safe, verify and rollback-info commands. The helper is explicit/manual only and does not run from service, boot, watcher, watchdog or queue processing. It protects pixel_local__*, heimnetz__*, target-*__*, targets-*__*, active app folders, dot/runtime names and Git worktrees.

Sortify Dispatch v4.6.5 - Sort Mode Control

Release: 4.6.5-sort-mode-control / versionCode=23.

This release adds explicit automatic sort mode control:

  • interval: service sorts every configured interval.
  • manual: disables automatic timed sorting while keeping Sort Now available.
  • boot_once: sorts once after reboot, then skips further service cycles until the next reboot.

New CLI/WebUI actions:

su -c sh /data/adb/modules/sortify/action.sh --mode-status
su -c sh /data/adb/modules/sortify/action.sh --preview-sort
su -c sh /data/adb/modules/sortify/action.sh --sort

Scope remains unchanged for infrastructure safety: no SDD marker writes, no SDD target management, no SSH key handling, no host-run, no DNS/HA/VIP/route changes.

Sortify Dispatch v4.6.4 - State Contract Preview

Release: 4.6.4-state-contract-preview / versionCode=22.

This release adds read-only operator inspection for the existing SSH Drop Dispatcher contract.

New CLI actions:

su -c sh /data/adb/modules/sortify/action.sh --explain-route <filename-or-path>
su -c sh /data/adb/modules/sortify/action.sh --marker-status <filename-or-path>
su -c sh /data/adb/modules/sortify/action.sh --contract-smoke

Scope:

  • --explain-route classifies local-hold, Markdown/Handover, Pixel-local and remote target artifacts.
  • --marker-status reads the existing dispatcher marker root and reports released, authority, policy, target fields and final gate.
  • --contract-smoke verifies Sortify-side expectations for policy=v4115, local holds, remote target holds and normal sortable files.
  • SDD marker root remains read-only from Sortify.
  • No SDD target management, no SSH key handling, no ntfy secret handling, no host run, no DNS/HA/VIP/route changes.

Sortify Dispatch v4.6.3 - Markdown/Handover local-hold

Release: 4.6.3-markdown-handover-hold / versionCode=21.

What changed:

  • Markdown/Handover operational files stay in /sdcard/Download:
    • *handover*.md
    • README*.md
    • RELEASE_NOTES*.md
  • The rule is local-hold-only and never creates an SSH Drop Dispatcher release.
  • Custom prefix heimnetz__ remains supported for explicit Heimnetz local-hold files.
  • target-*__* and targets-*__* remain the only dispatcher remote-target schemas.
  • action.sh --test-filename <name> reports reason=markdown_handover_hold for these files.

Out of scope:

  • No SDD target management.
  • No SSH key handling.
  • No DNS/HA/VIP/route or host-drop changes.
  • No default change to checksum_delete_identical.

4.6.1-install-ui-hotfix install UI hotfix

  • Update metadata changelog uses plain raw Markdown so Magisk/KernelSU dialogs do not display GitHub HTML.
  • customize.sh ignores missing optional uninstall.sh during permission setup.
  • No change to SDD targets, SSH keys, DNS/HA/VIP/route, or host drop paths.

Sortify Dispatch 4.5.1-custom-park-prefixes

Sortify Dispatch 4.5.1-custom-park-prefixes adds configurable custom park prefixes for local hold-only files.

Highlights:

  • WebUI field for custom park prefixes such as mypark__, hold__, nosort__ or skoda__.
  • Custom prefixes are local hold only; they never create SSH targets and never release files through the SSH Drop Dispatcher.
  • action.sh --test-filename <name> shows whether a filename is held by a custom prefix or built-in rule.
  • action.sh --guard-status is bounded by SORTIFY_GUARD_MAX_FILES and SORTIFY_GUARD_STATUS_TIMEOUT.
  • Config export remains Sortify-only and includes custom park prefixes plus guard bounds.

Out of scope:

  • No SDD target creation/editing.
  • No SDD config import/export.
  • No SSH key handling.
  • No private runtime migration.

Sortify Dispatch v4.5 - WebUI UX

Planned release: 4.5-webui-ux / versionCode=16.

  • WebUI is Sortify-only: no SSH target management, no SDD config import/export, no SSH key handling.
  • Adds mode presets for normal operation, maintenance safe-hold, guard-only and explicit unsafe sorting without protected hold.
  • Adds Sortify-only config export ZIP via action.sh --config-export.
  • Dispatcher link remains read-only status against the SSH Drop Dispatcher marker contract.
  • Public examples stay generic (target-alpha__*, targets-alpha-beta__*, pixel_local__*, termux-*, repo_*).

Companion: SSH Drop Dispatcher

Sortify Dispatch is the local sorter/protection companion for SSH Drop Dispatcher.

  • SSH Drop Dispatcher owns target delivery and writes authoritative policy=v4115 release markers.
  • Sortify Dispatch keeps target-*__* and targets-*__* artifacts in /sdcard/Download until that marker is valid.
  • Pixel-local, Termux and repo helper artifacts stay local protected hold; rc=0 is not an automatic release signal.

Sortify Dispatch v4.4 - SSH Drop Dispatcher alignment

Current release: v4.4-ssh-drop-dispatcher / versionCode=15.

  • Default dispatcher runtime is /data/adb/ssh-drop-dispatcher.
  • Remote protected artifacts still require the v4115 dispatcher release marker contract.
  • Pixel-local Termux artifacts stay local protected hold only.
  • rc=0 never globally releases Pixel-local artifacts; explicit local-release marker is deferred to a later feature.
  • Visible status uses generic dispatcher keys while legacy pidd keys remain compatibility aliases.

Sortify Banner

Sortify Dispatch

Original author: xCaptaiN09 Fork maintainer: Lycidias93 Version: 4.7.0-download-cleanup-integration

Sortify Dispatch is a Magisk / KernelSU module based on Sortify v4.0. It keeps normal download sorting, but adds an Artifact Guard for SSH Drop Dispatcher, Pixel-local scripts, Termux helper scripts, Magisk/KernelSU release ZIPs, and repo helper artifacts.

What stays in Download

The Artifact Guard keeps these operational artifacts in /sdcard/Download:

  • target-pi3__*, target-pi4__*, target-zeropi2__*, target-berylax__*
  • targets-*__*
  • legacy host-prefixed artifacts: pi3_*, pi4_*, zeropi2_*, berylax_*
  • Pixel-local scripts: pixel_local__*
  • Termux helper artifacts: termux-*, termux_*, pixel-termux*, pixel_termux*
  • dispatcher release artifacts: pixel-drop-dispatch*, pixel_drop_dispatch*, ssh-drop-dispatcher*, ssh_drop_dispatcher*, *drop-dispatch*, *drop_dispatch*
  • Sortify Dispatch release artifacts: sortify-dispatch*, sortify_dispatch*
  • Markdown/Handover files: *handover*.md, README*.md, RELEASE_NOTES*.md
  • repo helper scripts: repo_*.py, *_repo_*.py, repo_*.sh, *_repo_*.sh

Normal documents, images, videos, audio files, archives, APKs, and other files are still sorted into /sdcard/Sortify.

Guard tools

su -c sh /data/adb/modules/sortify/action.sh --guard-status
su -c sh /data/adb/modules/sortify/action.sh --guard-clean
su -c sh /data/adb/modules/sortify/action.sh --dispatcher-status

--guard-clean is safe by design: it restores misplaced protected artifacts to /sdcard/Download and moves same-name collisions to /sdcard/Sortify/GuardConflicts/<timestamp>/ instead of overwriting or deleting.

Dispatcher link

Sortify Dispatch does not control SSH Drop Dispatcher. It only provides read-only dispatcher link status and protects dispatcher-related artifacts from being sorted away.

Hold / release contract

Sortify Dispatch holds only operational artifacts. Normal downloads are sorted automatically. Dispatcher target artifacts require Dispatcher release after successful delivery to every target; Pixel-local and Termux artifacts require explicit Termux/operator release. See docs/HOLD_RELEASE_CONTRACT.md.

Installation

  1. Download Sortify-Dispatch-v4.7.0-download-cleanup-integration.zip from Releases.
  2. Flash through Magisk or KernelSU.
  3. Reboot if your module manager requires it.
  4. Run Sortify manually or wait for the service interval.

Manual trigger

su -c sh /data/adb/modules/sortify/action.sh

WebUI

KernelSU WebUI can configure the interval, toggle guard logging, run guard status, run safe guard clean, show dispatcher link status, and trigger a manual sort.

Online updates

module.prop and update.json point to this fork:

https://raw.githubusercontent.com/Lycidias93/Sortify-Dispatch/main/update.json

Module ID and path safety

The visible module name is Sortify Dispatch, but the module ID remains sortify. The active module path therefore stays stable at /data/adb/modules/sortify, so updates replace the existing Sortify module instead of installing a second parallel module.

Release integrity

Each release ZIP is published with a SHA256 checksum.

Changelog

See CHANGELOG.md.

Credits

Optional Dispatcher Integration

Sortify remains usable without Pixel Drop Dispatcher.

vNext design target:

  • SORTIFY_DISPATCHER_INTEGRATION=off|auto|on
  • default: auto
  • off: normal Sortify behavior, no dispatcher runtime dependency
  • auto: use dispatcher hold/release contract only when runtime is present and healthy
  • on: require dispatcher contract and fail clearly if unavailable
  • normal downloads must continue to sort even when dispatcher integration is disabled

Optional integration controls

Source implementation date: 2026-05-17.

Config file: /data/adb/modules/sortify/sortify.conf

Available flags:

SORTIFY_DISPATCHER_INTEGRATION=off|auto|on
SORTIFY_HOLD_PROTECTED=0|1
SORTIFY_NORMAL_SORT=0|1

Default behavior stays safe for users without Pixel Drop Dispatcher:

  • SORTIFY_DISPATCHER_INTEGRATION=auto
  • SORTIFY_HOLD_PROTECTED=1
  • SORTIFY_NORMAL_SORT=1

auto uses dispatcher-aware protected artifact holding only when Pixel Drop Dispatcher runtime is present and healthy. If dispatcher is absent, normal downloads keep sorting and protected artifacts are not hard-blocked by a missing dispatcher runtime.

Release 4.2-optional-dispatcher

This release promotes optional dispatcher integration controls from verified source/runtime smoke to public release:

  • SORTIFY_DISPATCHER_INTEGRATION=off|auto|on
  • SORTIFY_HOLD_PROTECTED=0|1
  • SORTIFY_NORMAL_SORT=0|1
  • WebUI controls for normal sorting, protected hold, and dispatcher integration mode
  • --config-status action output

Users without Pixel Drop Dispatcher can use off or the default auto mode safely.

PIDD v4.11 Sortify contract

Stand: 2026-05-25.

Sortify Dispatch can use Pixel Drop Dispatcher release markers when SORTIFY_DISPATCHER_INTEGRATION=auto or on and the PIDD runtime is healthy.

Required final marker contract:

  • released=yes
  • authority=dispatcher
  • sha256 matches the local Download artifact
  • size matches the local Download artifact
  • policy=v4115
  • pending_targets is empty

Protected dispatcher artifacts stay in Download when no valid final marker exists. released=no, non-empty pending_targets, missing markers, SHA/size mismatches, non-dispatcher authority, or older RC policies such as v4112/v4114 are treated as held evidence, not final release.

Modes:

  • off: ignore dispatcher runtime and marker contract.
  • auto: use the contract only when PIDD runtime and marker directory are healthy.
  • on: require a healthy PIDD runtime and marker directory; otherwise sorting fails clearly.

4.6-smart-dedupe

Sortify Dispatch 4.6-smart-dedupe adds extended categories and optional SHA-256 duplicate handling. With SORTIFY_DUPLICATE_MODE=checksum_delete_identical, identical same-name duplicates are deleted after matching SHA-256; same-name files with different checksums are kept in Duplicates with collision-safe names. Custom Park Prefixes remain local-hold-only and SDD target/SSH management remains out of scope.

v4.6.2 config preserve

4.6.2-config-preserve preserves existing Sortify settings during Magisk upgrades, including custom park prefixes, duplicate handling mode, guard bounds, log rotation and dispatcher mode.

Default duplicate mode remains filename; checksum-based deletion of identical source duplicates remains opt-in.

License

This project is licensed under the MIT License. See LICENSE.

About

✨Automatically organizes files in your Download folder for Magisk/KernelSU/SukiSU ultra

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages

  • Shell 83.0%
  • HTML 17.0%