-
Notifications
You must be signed in to change notification settings - Fork 0
Search Filters Sorting and Selection
All discovery controls operate on the active chat's attachment array. Filters combine with logical AND: a row must pass every active constraint.
Search trims leading and trailing whitespace and performs a case-insensitive substring match against the resolved filename. It does not search captions, artists, message text, or chat content.
The quick category bar selects one of:
- All
- Audio
- Video
- Images
- Documents
- Other
Category is a browsing aid, not a format restriction. Choosing All retains arbitrary formats and extensionless files.
| Filter | Behavior |
|---|---|
| Extension | Normalizes case, a leading dot, and surrounding whitespace |
| Minimum size | Includes files at or above the parsed byte threshold |
| Maximum size | Includes files at or below the parsed byte threshold |
| Sent After | Includes attachments at or after the selected date value |
| Sent Before | Includes attachments at or before the selected date value |
| New since last scan | Includes identities absent from the refresh baseline |
An attachment with unknown size cannot satisfy an active size constraint. Invalid or empty size input does not invent a byte value.
Active advanced filters appear as removable tokens. Clear Filters resets search, category, extension, size, date, and new-only state. It does not change the selected Telegram chat or delete a cached scan.
The sort menu supports:
- Newest First
- Oldest First
- Filename using localized standard comparison
- File Type using extension, then category when extension is missing
- File Size with known larger files first
Column headers can invoke the relevant sort. Date sorting uses newest as the primary header action; the full menu exposes oldest.
Selection stores attachment identities, not row indexes. That keeps selection stable while sorting and protects against two rows with similar display names.
- A normal row action selects the row.
- Command-click toggles a row without clearing the rest.
- Shift-click selects the visible range from the current anchor.
- Command-A adds all visible eligible rows.
- Escape clears selection and the range anchor.
Range selection follows the current filtered and sorted order. Ineligible rows inside the range are ignored.
Changing filters can hide an already selected item. The summary distinguishes:
- total selected;
- selected and currently visible;
- selected but hidden by filters;
- total known byte count.
This makes a filtered batch explicit instead of quietly dropping previously selected rows. Changing chats always clears the active selection boundary.
Rows expose actions appropriate to their state, including:
- select or deselect;
- copy original filename;
- reveal a completed file when a known destination exists;
- retry or Download Again through download history.
Unspool is an independent project and is not affiliated with Telegram. Repository · Privacy · Security · MIT License
- Getting Started
- Detailed Telegram Setup
- Feature Overview
- Chats and History
- Attachments and Filenames
- Search and Selection
- Download Workflow
- Conflicts and Recovery
- Download History
- Settings
- Accessibility
- Troubleshooting
- Detailed Troubleshooting and FAQ
- Privacy and Security
- Detailed Security Model
- TDLib Integration
- Persistence
- Concurrency and Errors
- Glossary