2026-09-22 - 2026-10-22
Overview
3 Releases published by 1 user
Published
v0.0.2
Published
v1.0.0-rc2
Published
v1.0.0-rc1
50 Pull requests merged by 1 user
Merged
#110 next into main
Merged
#131 Keep modules, lint cache and system packages in check builds (closes #109)
Merged
#130 Install from @latest, retract v0.0.1, print a go-installed binary's version (closes #116)
Merged
#129 scan: create the database's directory where its path leads (closes #119)
Merged
#128 scan: never record its own database files (closes #115)
Merged
#127 scan: skip OS default excludes, and record nothing on filesystems that are not persistent (closes #124)
Merged
#126 Show the progress rate over the last 5 seconds, and where a phase waits after 10 seconds with no item done (closes #125)
Merged
#123 Add sfdupes info: show the database's details (closes #117)
Merged
#122 report: show its phases as N of M, with progress, elapsed time and ETA (closes #114)
Merged
#121 trees: show its phases as N of M, with progress, elapsed time and ETA (closes #113)
Merged
#120 scan: show each phase as N of M, with progress, elapsed time and ETA, also while it waits (closes #112)
Merged
#118 Name the database each command uses on stderr (closes #111)
Merged
#97 Re-vendor the canonical files from sneak/prompts at e3f79c4 (closes #95)
Merged
#69 next → main: trial-run fixes (escaping, read-only reports, scan lock, interrupts, streaming, README)
Merged
#108 Walk an operand nested on another filesystem with -x (closes #106)
Merged
#105 Keep records on other filesystems under an operand with -x (closes #99)
Merged
#107 Open files to hash without blocking and reject non-regular ones (closes #100)
Merged
#104 Name the scan lock file from the database's resolved path (closes #101)
Merged
#103 Redraw a finished bar below a warning for its last file (closes #102)
Merged
#96 Store mtime to the nanosecond so a same-second rewrite is re-hashed (closes #12)
Merged
#94 Cut the narration from TODO.md and the script and Dockerfile comments (closes #49)
Merged
#92 Run the tests under the race detector with make test-race (closes #18)
Merged
#93 Fail a bare docker build instead of serving cached gates (closes #39)
Merged
#84 Format Markdown with prettier in make fmt and make fmt-check (closes #19)
Merged
#91 Stop script/lint writing an image it never uses (closes #48)
Merged
#90 Test the remaining CLI cases (closes #16)
Merged
#89 Copy the current canonical .golangci.yml (closes #26)
Merged
#88 Test both hashWorker cancellation checks on their own (closes #83)
Merged
#87 Escape the database path in the SQLite connection string (closes #55)
Merged
#86 Reject scan --workers below 1 as a usage error (closes #10)
Merged
#85 Test both walk cancellation checks on their own (closes #81)
Merged
#82 Test that scan refuses another schema version (closes #64)
Merged
#59 Correct four inaccurate comments in cancel_test.go and rename a constant (closes #33)
Merged
#60 Test the -x filesystem-boundary rejection branch (closes #17)
Merged
#58 Refuse an unversioned database that already has a files table (closes #11)
Merged
#80 Document install, a daily cron scan and reading the reports (closes #54)
Merged
#77 Keep the module cache out of the build stage's chown (closes #43)
Merged
#78 Print --version to stdout (closes #15)
Merged
#79 Stop scan cleanly on SIGINT or SIGTERM (closes #5)
Merged
#76 Stream report and trees instead of loading every record (closes #14)
Merged
#73 Print progress at once off a terminal, keep warnings out of redraws (closes #13)
Merged
#71 Warn about and skip non-regular and .zfs operands, keeping their records (closes #9)
Merged
#75 Hold a lock so a second scan fails at once (closes #53)
Merged
#74 Test report and trees stdout write failures (closes #30)
Merged
#72 Open the database read-only for report and trees (closes #8)
Merged
#70 Escape tab, newline, CR and backslash in report paths (closes #7)
Merged
#68 Stamp the git tag or short commit in a plain docker build (closes #67)
Merged
#50 next
Merged
#65 Compute the content hash only when head and tail match (closes #61)
Merged
#63 Keep the database schema at version 1 (closes #61)
49 Issues closed from 2 users
Closed
#109 make test goes over 60 seconds when the kept Go build cache has been removed
Closed
#116 go install @latest must install main's tip; retract v0.0.1; a go-installed binary must say which version it is
Closed
#119 scan creates the database's folder in the wrong place when the path holds .. after a symlink
Closed
#115 scan records its own database files when the database is inside a scanned operand
Closed
#124 scan skips OS-appropriate default excludes (/proc, /sys, /tmp, /run, /var/tmp on Linux)
Closed
#125 scan prints nothing for long stretches and looks frozen, then reports over 1,000 files a second
Closed
#117 Add sfdupes info: show the database's details
Closed
#114 report: never sit silent; show its phases as N of M with progress, elapsed time and ETA
Closed
#113 trees: never sit silent; show its phases as N of M with progress, elapsed time and ETA
Closed
#112 scan: show each phase as N of M, with progress, elapsed time and ETA, also while it waits
Closed
#111 Say which database file each command uses, and document when scan writes to it
Closed
#95 Re-vendor the canonical files from sneak/prompts at dd4027b
Closed
#106 With -x, an operand nested under another but on another filesystem is never walked
Closed
#99 scan -x deletes the records of every other filesystem mounted under its operand
Closed
#100 A regular file replaced by a FIFO before the hash phase reads it hangs the scan for good
Closed
#101 Two scans run at once when the database is reached through a symlink
Closed
#102 On a terminal, a warning for the last file of a phase erases the finished progress bar
Closed
#12 Store mtime at nanosecond resolution so a same-second rewrite is re-hashed
Closed
#52 Review toward 1.0: identify and file all next steps
Closed
#49 Cut the narration from TODO.md entries and script/Dockerfile comment blocks
Closed
#18 Add a race-detector test target for the concurrent scan paths
Closed
#39 A bare docker build . silently restores the cached-gate false green
Closed
#19 script/fmt and script/fmt-check dropped Markdown formatting
Closed
#48 script/lint exports an image it never uses, leaving a dangling image per run
Closed
#16 No test covers the CLI surface: exit codes, stream separation, or the TSV writers
Closed
#26 gomodguard deprecation warning on every lint run — needs a fix in the canonical config
Closed
#83 Two hashWorker cancellation checks have no test that always fails without them
Closed
#55 A database path containing ?, # or % opens the wrong file
Closed
#10 --workers is silently clamped instead of rejected
Closed
#81 Two walk cancellation checks have no test that fails without them
Closed
#64 No test covers scan's rejection of a database with another schema version
Closed
#33 cancel_test.go: four inaccurate claims in comments and one naming departure
Closed
#17 The -x filesystem-boundary rejection branch is never tested
Closed
#11 initSchema mishandles an unversioned database that already has the files table
Closed
#54 README: install, cron deployment, and how to read the reports
Closed
#43 chown -R over the module cache is the largest build layer and re-runs on every source change
Closed
#15 --version goes to stderr and the Docker image always reports "dev"
Closed
#5 Handle SIGINT/SIGTERM gracefully during scan
Closed
#14 report and trees hold every record, including both hex hashes, in memory
Closed
#13 progress: nothing printed at phase start on non-TTY, bogus isatty, warnings race the spinner
Closed
#9 Non-regular and .zfs operands are silently ignored, and their records are deleted
Closed
#53 Two scans can run against the same database at once
Closed
#30 report exits 0 when stdout is closed, instead of failing the write
Closed
#8 report and trees open the database read-write and set journal_mode
Closed
#7 TSV output is unescaped: paths with tabs or newlines corrupt the report
Closed
#67 docker build . stamps dev, not the git tag or short commit
Closed
#66 Run every build, test and lint step in the Dockerfiles at nice -n 19
Closed
#61 functionality change: 1k start-and-end becomes 65k start and end
Closed
#25 Dockerfile lint-stage pin comment is misleading and inconsistently formatted
24 Issues created by 2 users
Opened
#64 No test covers scan's rejection of a database with another schema version
Opened
#66 Run every build, test and lint step in the Dockerfiles at nice -n 19
Opened
#67 docker build . stamps dev, not the git tag or short commit
Opened
#81 Two walk cancellation checks have no test that fails without them
Opened
#83 Two hashWorker cancellation checks have no test that always fails without them
Opened
#95 Re-vendor the canonical files from sneak/prompts at dd4027b
Opened
#98 Finish 1.0 and tag it; after that, bugfixes only
Opened
#99 scan -x deletes the records of every other filesystem mounted under its operand
Opened
#100 A regular file replaced by a FIFO before the hash phase reads it hangs the scan for good
Opened
#101 Two scans run at once when the database is reached through a symlink
Opened
#102 On a terminal, a warning for the last file of a phase erases the finished progress bar
Opened
#106 With -x, an operand nested under another but on another filesystem is never walked
Opened
#109 make test goes over 60 seconds when the kept Go build cache has been removed
Opened
#111 Say which database file each command uses, and document when scan writes to it
Opened
#112 scan: show each phase as N of M, with progress, elapsed time and ETA, also while it waits
Opened
#113 trees: never sit silent; show its phases as N of M with progress, elapsed time and ETA
Opened
#114 report: never sit silent; show its phases as N of M with progress, elapsed time and ETA
Opened
#115 scan records its own database files when the database is inside a scanned operand
Opened
#116 go install @latest must install main's tip; retract v0.0.1; a go-installed binary must say which version it is
Opened
#117 Add sfdupes info: show the database's details
Opened
#119 scan creates the database's folder in the wrong place when the path holds .. after a symlink
Opened
#124 scan skips OS-appropriate default excludes (/proc, /sys, /tmp, /run, /var/tmp on Linux)
Opened
#125 scan prints nothing for long stretches and looks frozen, then reports over 1,000 files a second
Opened
#132 the algorithm in "Duplicate detection" is nonsensical
1 Unresolved Conversation
Open
#56
Trial run at real scale on the target server before tagging 1.0.0