এখানে datui-এর ২০টি সংস্করণ আছে, ৬ জুন, ২০২৬ থেকে বর্তমান 0.4.15 পর্যন্ত। প্রতিটির লিংক যায় প্রকাশকের নিজস্ব ইনস্টলার ফাইলে।
| সংস্করণ | তারিখ | সাইজ | ফাইল |
|---|---|---|---|
| 0.4.15সর্বশেষ | ২৫ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- A scatter chart of a large sample with missing values draws at once; one of 200,000 points took most of a second per frame and gigabytes of memory
- On a chart's Y, Enter with nothing toggled takes the column under the cursor, rather than keeping the column Y opened with |
| 0.4.14 | ২৪ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- A delimited format spec takes [files] path = "{game}_{start:%Y-%m-%d_%H-%M-%S}.csv", adding columns read from each file's name, so files opened together say which file each row came from; a dated part with a time reads as a datetime
- Queries take numbers with an exponent, such as 1e9 and 2.5e-3
- Change type makes a column of numbers a duration in the unit they count, and a datetime plus a duration adds in the finer unit, in a query, a derived column or Combine
- Queries read the columns as Change type and Combine left them, and the changes outlive the query
- contrib/formats/mangohud.toml opens MangoHud frame logs, with each log's game and start as columns
- A folder or glob read through a format spec leaves out the files the spec does not match, such as summaries beside logs, and a note names them
- Chart Color takes several columns, a series per combination of their values, and dates and datetimes, named as ISO 8601 to the precision the values need
- A line or scatter chart takes durations as X and Y, ticked as lengths of time: 250ms, 30s, 2m, 1h30m
- Durations read in their units, exactly: 16.6667ms, 1m 23.5s, 1d 4h, rather than 16666700ns; filters and find take them as shown
- A line or scatter chart's Range draws outliers at the edge of a Y axis fitted to the rest, so one spike no longer flattens the line
- o in Analysis Distribution filters the table to a column's outliers and O to the rest, with new outside and between LOW..HIGH filters
- A line chart's Smooth draws a moving average (trailing mean) over a length of time or a number of points, with the raw line behind it
- A line or scatter chart's Log scale spaces powers of ten evenly on Y, and on a number X too; values of 0 or less are left out and counted. Y used to keep zeros on the axis, so charts with zeros now leave them out
- A scatter chart's Trend fits a line through the points (linear, exponential, power, robust, local or y = x) and says what it means in a sentence under the plot; c on a Correlation Matrix pair opens it
- A chart export's legend can sit Below the chart, in rows, so long series names no longer squeeze the plot |
| 0.4.13 | ১৯ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- Home opens at once when a recent dataset is on a network share that is down, instead of waiting seconds on the share, and its Looking... spinner turns while the listing is built |
| 0.4.12 | ১৬ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- A bucket object with no extension opens as the same file on disk would: Parquet in place, anything else downloaded and read by its bytes, or shown as hex, instead of failing as Parquet
- Open all says what it reads (3 CSV files, 1 JSON file skipped) instead of mixed files, and is no longer offered on a bucket prefix that holds only sub-prefixes or nothing it can read |
| 0.4.11 | ১৫ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- On the home screen, Open all is a chip above .., set apart from the directory's files by a blank line |
| 0.4.10 | ১৫ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- A SQL statement with a mistake deep inside nested parentheses or a long dotted name no longer freezes datui for minutes; a statement deeper than limits.sql_depth levels (24) is refused with the setting to raise
- rustls 0.23.46, for RUSTSEC-2026-0346: Debug output of a TLS client session could expose its secrets |
| 0.4.9 | ১৪ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- A :N jump to a row whose page is still being read keeps that row, even when a frame is drawn before the page arrives |
| 0.4.8 | ১৪ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- On the home screen, the row that reads a whole directory is now called open all (…) instead of taking the directory's name, and a directory that holds only other directories no longer offers one
- Opening a directory whose files are of different kinds now says so in plain words and suggests what to open instead |
| 0.4.7 | ১০ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
q queries now follow kdb+ q exactly, so some queries change meaning:
- & and | (or and, or) work anywhere and read right to left like every other q operator. Put the left condition in parentheses: write where (a > 10) | a < 5, not where a > 10 | a < 5
- Conditions after where, separated by commas, filter one after another: in where x > avg x, y > avg y, the second average is over the rows the first kept
- On numbers, & and | give the smaller and the larger value, so 0 | x floors x at 0
- With a null, & gives null and | gives the other value
- Division always gives a fraction: 7 % 2 is 3.5. Use floor[...] for a whole number
- not of a number is true when the number is 0 |
| 0.4.6 | ১০ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- The home screen no longer looks like a row is selected when it opens: the search box shows it has the keys, and names the row Enter will open
- Clearer documentation: every page, the --help text and the in-app key help were rewritten in plainer language, and about a dozen mistakes were corrected along the way
- The docs now say exactly what --skip-rows skips: rows before the header, or data rows after it when --header-rows is set |
| 0.4.5 | ১০ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- The home screen stays fast in big folders: it only looks at the files you can see, so typing and moving around stay quick even with 50,000 files
- datui starts lighter, using about a third less memory: the home screen opens with no file picked and loads nothing until you pick one (press Down, or type to search)
- Smoother over SSH: holding a key or typing fast redraws the screen once, not once per key
- Pasting into a text field pastes everything at once, and a pasted line break no longer acts as Enter
- A network share or bucket that stops responding says not answering after 30 seconds instead of spinning; Ctrl+R tries again
- If the files of a cloud dataset are replaced while you have it open, datui offers to reopen it and keeps your query, filters, sort and drill-down |
| 0.4.4 | ৮ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- Paging deep into a large CSV no longer recounts the file on every page: after the first jump, a page reads only its own rows
- Tables of long text, such as articles, logs or JSON, move a row as fast as tables of numbers: a cell reads only what it can show of its value, and a scroll formats only the rows it brings in
- Filtering the home screen in a directory of thousands of files takes a fifteenth of the CPU it did, and the files on screen are measured first
- Past the bottom of the page, a row down moves one row again, not two
- Scrolling the table moves its lines within the terminal and draws only what changed, about an eighteenth of the bytes per row, so scrolling over SSH and in tmux is much lighter; display.scroll_region = false turns it off |
| 0.4.3 | ৮ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- The Python module works with Python Polars 2.0: DataFrames go in as Arrow data, and capture=True returns the view's rows there, with a warning, since 2.0 cannot read the plans datui writes
- capture=True over a SQLite table or a text or log file returns the view's rows, with a warning, instead of failing
- A [limits] config section raises every cap a file can hit: records indexed in one pass (flight logs, candump, text-file lines, format specs), ELF symbols, MIDI files and events, journal JSON, SDF fields, VCD signals, FIX tags and fields, GPX extension fields, NumPy headers and the rows of an Info list; each note or error that hits one names its key
- With --follow, a file replaced right as it is opened is read again instead of followed as the file it replaced
- Sizes are shown the same way everywhere, in binary units
- Chart exports tick and title their axes like the chart on screen: Y axes end on a tick, log axes tick on powers of ten, dates fall on the calendar, and histogram and density axes read Count, Share or Density
- Value counts and Data Quality shares show small shares precisely, such as 0.04% or <0.01%, instead of rounding them to <0.1% or 0.00%
- Esc closes the overlay on top, and going home closes every overlay so none comes back over the next dataset
- Footer keys say what the help says: Data Quality's keys read in the same words and sentence case as every other screen (v Sample rows, b Baseline, Enter Details), Sort & Filter's L says Freeze, and keys no help listed (questions, the crosshair, Data Quality's forms and popups) are in the help and the reference
- Started in a huge directory, the home screen shows its first rows and … N more (Enter shows them all), so the cloud and example sections stay in view; every directory section starts with .., which goes up a level
- Combine's name is a full text field, edited with the same keys as every other
- In a picker, Space types a space once you have typed, so a name of several words narrows instead of choosing its first match; Enter chooses
- With display.unicode = never, no screen draws a Unicode middle dot or ellipsis, and wide characters no longer push sidebars and section rules out of line
- Filtering on the home screen and drawing the table allocate far less, and a sidebar Apply reads the data once
- performance.threads caps the threads Polars computes with (0, the default, uses every core); POLARS_MAX_THREADS still wins when set
- home.wordmark = false replaces the home screen's wordmark with the one-line title bar |
| 0.4.2 | ৭ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- Fedora, RHEL and Amazon Linux get a dnf repository, so dnf upgrade keeps datui current; the install script adds it
- Homebrew installs datui on Linux too |
| 0.4.1 | ৬ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
- Windows draws datui's Unicode glyphs by default, in Windows Terminal opened as the default terminal and in the classic console, whatever the code page; display.unicode = "never" keeps ASCII |
| 0.4.0 | ৬ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
0.4.0 rebuilds the interface, adds a home screen, and opens many more kinds of data: pipes and logs, binary formats described in TOML, and a dozen new file types. Flags and config keys were renamed into one vocabulary; the table at the end lists what moved.
Highlights
- A new interface. One look on every screen: a status footer with the keys in effect, ? help grouped by task, Enter applies and Esc discards everywhere, type-to-narrow pickers, the mouse throughout, and an ASCII twin for every symbol
- Home screen. Run datui with no path for recent datasets, the current directory, cloud stores and catalogs, with rows, columns and size before you open one; a local file previews its first rows. Ctrl+O comes back from anywhere
- Catalogs. A TOML file of named datasets, local or remote, is a section of the home screen, and Ctrl+D adds a row to yours. The bundled examples (NOAA weather, NYC taxis, flights, earthquakes and more) open with no login and carry their publishers' documentation (Ctrl+E)
- Column cursor. ←/→ move a cursor across columns: [ ] sort by it, F counts its values, + - filter on its cell, H L move it
- Find and inspect. / finds text, a regex or letters in order, lighting matches as you type, and n N step through them; : goes to a row or runs SQL or q. Space inspects the row, stepping into structs, lists and JSON
- Pipes, logs and live files. cmd | datui reads CSV, JSON, Parquet, Arrow or Avro by its first bytes; logs read as lines and journalctl -o json as the journal; --follow tails a file or pipe, and --tee FILE records the stream while you view it
- New formats. SQLite, NumPy, WAV and AIFF, MIDI, SafeTensors and GGUF (from the header alone, remote too), NMEA and GPX, PX4 ULog and ArduPilot DataFlash, candump with DBC, FIX, VCD, SDF, ELF, Arrow IPC streams and Hugging Face datasets caches
- Format specs. A TOML spec reads fixed, length-prefixed or typed binary records, or a family of instrument CSV exports; datui formats check validates one. Any other local file opens in a hex view
- Directories as one table. Parquet, CSV and NDJSON directories open as the union of their columns; Hive partitions are read, and Delta, Iceberg and Hudi tables are recognized
- Cloud at scale. S3, Google Cloud, Azure and HTTP(S) stores found from the logins you have; huge prefixes list in parallel (NOAA's 842,000-file by_station in 8 seconds), and Parquet reads only the row groups a page needs
- Analysis on samples. Describe, Distribution, Correlation, charts and Data Quality share one sample spread across the whole dataset, and S draws one into the table. Distribution fits are calibrated and the Q-Q plot is correct
- Data Quality. A plain-words report of what is wrong, every finding's rows one Enter away: trends by time window, intervals between time columns, declared rules, and export to JSON or Markdown
- Charts. Built on shelves: Y takes an aggregate over every row, dates bucket by period, Color splits series, and x puts a crosshair on the plot. Exports go to PNG, SVG or PDF with a title, notes and source
- Copy. y copies a cell, a row, the screen or the whole view as TSV, CSV or Markdown, locally or over SSH; Copy as Python writes a script that rebuilds the view in Polars
- Queries. SQL completes column names and keeps a failed statement in the prompt with a fix; q gains time parts, text parsing, in, like, xbar, wavg and an optional from df. Enter on a grouped row drills down to its rows
- Views, formerly templates, save the query, filters, sort, sample and chart, and say why they match a file
- Command line and config. One registry for every key: -c KEY=VALUE, datui config init|path|keys, datui cache, datui views, datui theme, shell completions and man pages. Named themes, light or dark as the terminal is
- Installing. Linux builds run on glibc 2.28 and newer, Linux arm64 is on PyPI, cargo binstall datui works, and the install script verifies what it downloads
- Python. datui.view(lf, capture=True) returns what you |
| 0.3.2 | ১১ সেপ্টেম্বর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
This release fixes several bugs in the text fields, the load path and the
parsers, and adds signatures to release artifacts.
Fixed
- Text input was rewritten on top of a new in-tree editor, replacing the two
near-duplicate widgets that wrapped tui-textarea. Pressing / after Esc
showed a blank query bar instead of the running query, and switching query
tabs showed the last thing typed rather than that tab's query. Both are
fixed. Readline keys (Ctrl-A, Ctrl-E, Ctrl-K, Ctrl-W, Ctrl-U) work as
before. (#116)
- Query history is merged rather than overwritten when two instances run at
once. (#116)
- Opening a second dataset left the first one on screen, under the incoming
file's name and with its row count, for the whole load. The load now owns
the screen from the keypress until its dataset is installed. (#113)
- Ctrl+O reached the home screen mid-load but did not abandon the load, which
ran to completion and swapped its dataset in underneath. Loads are now
abandonable, and no phase of a load blocks the event thread. Declining
"Continue with download?" exited the app; modals raised over the home screen
could not be dismissed; a row count computed for one dataset could be applied
to the next. (#109)
- The home screen probes remote roots with a cap of four concurrent probes, but
completed probes were never removed from the in-flight list. After four
roots, no root was probed again for the rest of the session. (#110)
- Three parser bugs found by fuzzing: the query parser recursed once per nested
parenthesis and exhausted the stack at around two hundred, killing the
process; hex colour parsing indexed at fixed byte offsets and panicked on
a non-ASCII value; a literal * in a column name consumed a glob pattern's
wildcard. (#114)
- Builds without the sql feature, and cloud-only builds, did not compile. A
cloud-only build also left downloaded data in the temp directory. (#114)
- Homebrew refuses a third-party tap without brew trust, so the documented
Homebrew install failed. The command is now in the README and the install
guide. The one-line install was unaffected. (#108)
Security
- Cell values, column names, filenames and parser error messages containing
terminal escape sequences reached the terminal intact. A spreadsheet cell
could write to the clipboard or clear the screen. The rendered buffer is now
swept before it is written out. (#80)
- --generate-config wrote its template, which invites an S3 access key and
secret, at 0644. It is now created 0600, and an existing 0644 file is
corrected. (#82)
- Releases now publish SHA256SUMS, and install.sh verifies what it
downloaded before installing. Verification is skipped for releases that
predate the file. (#106)
- SHA256SUMS is signed with cosign, keyless via Sigstore, and the signature
published alongside it. The identity is the release workflow's OIDC token.
SECURITY.md carries the verification command. (#115)
- calamine 0.36 moves off quick-xml 0.38, which carries two denial-of-service
advisories reachable from any .xlsx opened. The Excel reader, previously the
only input format with no test coverage, is now covered. (#79)
- arrow and orc-rust upgraded together; both parse untrusted input. (#100)
- ureq 3 bounds the whole HTTP exchange rather than individual socket
operations, so a server that trickles bytes no longer hangs the TUI. (#101)
- ratatui 0.30 resolves lru past two memory-corruption advisories that were
unpatchable while ratatui 0.29 pinned it, and drops paste. (#116)
- Added a security policy, security tooling in CI, and coverage-guided fuzzing
of the five parsers that run on untrusted input. (#59, #78, #114)
- The contributor requirements file floors filelock past two advisories it
reached through pre-commit, and the security documentation was corrected
where it had gone stale. Both are contributor-facing; nothing changes for
anyone installing datui. (#117)
Build
- The dev profile emitted full DWARF for all dependencies, producing a 1.9 GB
debug binary that w |
| 0.3.0 | ৯ সেপ্টেম্বর, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোটWhat's changed
Home screen (#56) — datui with no arguments opens a launcher: recents, the current directory, configured directories, and places you have opened data from. Type to filter by name or column, or to search recursively below the working directory. fzf-style fuzzy matching, with the matched characters highlighted.
Know what you are opening (#56) — source filesystem, rows, columns, size on disk, size once decompressed with its codec and ratio, row-group count, and hive partition layout. Read from the mount table and the Parquet footer; no data is touched.
Never blocks (#56) — no filesystem I/O on the drawing thread. Network roots are probed on detached threads and abandoned rather than joined. Roots, directory listings, footer reads and search depth are all bounded, and every limit that changes what you see says so.
Follows your Omarchy theme (#56) — colors track the active theme through a config import, with a contributed template. New [theme] mode = "auto" | "dark" | "light" fixes chrome that was unreadable on light terminals.
- Desktop entry shipped in the deb, rpm and AUR packages. (#56)
- Fix a modal crash on short terminals, and concurrent writes losing recent entries. (#56)
- Keep the symbol table in released binaries. (#55)
- Fail fast with recovery steps when the winget fork sync is blocked. (#53)
Full changelog: v0.2.56...v0.3.0 |
| 0.2.56 | ১১ আগস্ট, ২০২৬ | — | ৬৪-বিট ZIP রিলিজ নোট- #52 Thousands separator: https://derekwisong.github.io/datui/latest/user-guide/configuration.html#number-formatting |
| 0.2.55 | ৬ জুন, ২০২৬ | — | ৬৪-বিট ZIP |