Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1060,7 +1060,7 @@ jobs:
# in somebody else's file.
run: |
set -euo pipefail
watched='internal/format/registry.go internal/damage/damage.go cmd/tfg/main.go internal/gui/window/run.go internal/gui/run_cgo.go internal/gui/window/tidy.go internal/audit/parallel.go internal/engine/parallel.go internal/tool/tool.go internal/gui/window/tools.go internal/gui/window/work.go internal/gui/window/closing.go internal/format/video/ahead.go go.mod .github/workflows/ci.yml .github/build-tags .github/race-weights .github/scripts/race_parts.py'
watched='internal/format/registry.go internal/damage/damage.go cmd/tfg/main.go internal/gui/window/run.go internal/gui/run_cgo.go internal/gui/window/tidy.go internal/audit/parallel.go internal/engine/parallel.go internal/tool/tool.go internal/gui/window/tools.go internal/gui/window/work.go internal/gui/window/closing.go internal/gui/window/dropping.go internal/format/video/ahead.go go.mod .github/workflows/ci.yml .github/build-tags .github/race-weights .github/scripts/race_parts.py'
# On a pull request there is no "before" - the field belongs to a push
# - so this asked for something empty and every pull request answered
# "touched". That quietly undid the decision of 2026-08-20, because
Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@ because it turns other people's test suites red.

### Added

- **Drop a folder or a file onto the window.** A folder dropped onto Single
batch, Presets or Several batches becomes the output directory. On the Tools
screen it goes into the box of the chosen tool when the tool takes that
kind: a file for `archive-scan`, `checksum` and `checksum-check`, a folder
for `checksum-write`. A file where a folder goes, several things at once or
a path that is not there is refused under the box, and the box keeps its
value. An empty path box says it takes a drop.

- **A new format: `otlp`, OpenTelemetry traces, logs and metrics as OTLP
JSON.** `tfg generate --format otlp` writes them to an exact size, one batch
on each line as the OTLP file exporter does (`.jsonl`), or one request for
Expand Down Expand Up @@ -201,6 +209,10 @@ because it turns other people's test suites red.

### Changed

- **On Windows, a path picked with Choose... has backslashes.** It is written
the way Windows writes paths, the same text a drop of that folder or file
puts in the box. It came with forward slashes before.

- **`empty-and-minimal` now includes `otlp`.** The preset builds the smallest
file of every format this build has, so with `formats` left at `all` it
gains an `otlp` target of 1266 B, and the recipe `tfg preset eject
Expand Down Expand Up @@ -255,6 +267,9 @@ because it turns other people's test suites red.

### Fixed

- **Choose... is off while files are being made.** The output directory box
was frozen during a run and the button beside it was not, so a folder picked
mid run went into the box while the run went on writing into the old one.
- **An AVIF file asked for just above the size where its picture grows is
written.** In 0.5.0 about a quarter of the files asked for at 16389 or
16439 B were not written at all, and the run ended with "1 file could not be
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -824,6 +824,12 @@ behind. The window speaks your system's language when it has it (English and
Polish today) and English otherwise. Preferences lets you choose another, and
says what the window keeps between runs.

A folder dropped onto the window becomes the output directory, and on the
Tools screen a file or a folder dropped onto it goes into the box of the chosen
tool, the same as picking it with Choose... Drop one at a time. Something the
box cannot take is refused with a sentence under the box, and the box keeps
what it had.

<p>
<img src=".github/window-presets.png" width="49%" alt="The Presets screen of the window, with the list of presets open">
<img src=".github/window-settings.png" width="49%" alt="One batch of log files in the window, with the settings the log format takes">
Expand Down
6 changes: 6 additions & 0 deletions internal/guard/concurrency_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ var mayBeConcurrent = map[string]string{
// cancels it and waits for it the same way (G7). Added 2026-09-29 with the
// Tools tab (docs/NARZEDZIA-SUMY-2026-09-29.md section 12.3).
"internal/gui/window/tools.go": "a tool reads beside the window, and closing the window waits for it",
// Asking the disk what a dropped path is took 21.0 s for a network path
// nobody answers for (measured 2026-11-14, docs/DRAG-DROP-2026-11-14.md
// section 12.1), and the window would stand still for all of it. One
// os.Stat on a worker, the answer back through fyne.Do, nothing shared but
// a count read on the interface thread.
"internal/gui/window/dropping.go": "what a dropped path is gets asked beside the window, so a network path that does not answer cannot freeze it",
// Signals arrive on a channel by definition, and the handler has to run
// beside the work it interrupts.
"cmd/tfg/main.go": "the interrupt handler has to run beside the work it stops",
Expand Down
Loading
Loading