kubo/docs/changelogs
segfault_bits c1fd4d70f5
Some checks failed
CodeQL / codeql (push) Has been cancelled
Docker Check / lint (push) Has been cancelled
Docker Check / build (push) Has been cancelled
Gateway Conformance / gateway-conformance (push) Has been cancelled
Gateway Conformance / gateway-conformance-libp2p-experiment (push) Has been cancelled
Go Build / go-build (push) Has been cancelled
Go Check / go-check (push) Has been cancelled
Go Lint / go-lint (push) Has been cancelled
Go Test / unit-tests (push) Has been cancelled
Go Test / cli-tests (push) Has been cancelled
Go Test / example-tests (push) Has been cancelled
Interop / interop-prep (push) Has been cancelled
Sharness / sharness-test (push) Has been cancelled
Spell Check / spellcheck (push) Has been cancelled
Interop / helia-interop (push) Has been cancelled
Interop / ipfs-webui (push) Has been cancelled
feat(cli): ls --long (#11103)
* Implements the -l/--long flag for the ipfs ls command to display Unix-style
file permissions and modification times, similar to the traditional ls -l.

When the --long flag is used, the output includes:
- File mode/permissions in Unix format (e.g., -rw-r--r--, drwxr-xr-x)
- File hash (CID)
- File size (when --size is also specified)
- Modification time in human-readable format
- File name

The permission string implementation handles all file types and special bits:
- File types: regular (-), directory (d), symlink (l), named pipe (p),
  socket (s), character device (c), block device (b)
- Special permission bits: setuid (s/S), setgid (s/S), sticky (t/T)
  - Lowercase when execute bit is set, uppercase when not set

The timestamp format follows Unix ls conventions:
- Recent files (within 6 months): "Jan 02 15:04"
- Older files: "Jan 02  2006"

Signed-off-by: sneax <paladesh600@gmail.com>

* fix(ls): correct --long flag header order and help text

- fix header column order: was "Mode Hash Size Name ModTime" but data
  outputs "Mode Hash Size ModTime Name", now headers match data order
- remove redundant if/else branch in directory output that had
  identical code in both branches
- add example output to help text showing format with mode, hash,
  size, mtime, and name columns
- document that files without preserved metadata show '----------'
  for mode and '-' for mtime
- add changelog entry for v0.40

* test(ls): add format stability tests for --long flag

add tests to prevent formatting regressions in ipfs ls --long output:

unit tests (core/commands/ls_test.go):
- TestFormatMode: 20 cases covering all file types (regular, dir,
  symlink, pipe, socket, block/char devices) and special permission
  bits (setuid, setgid, sticky with/without execute)
- TestFormatModTime: zero time, old time (year format), future time,
  format length consistency

integration tests (test/cli/ls_test.go):
- explicit full output comparison with deterministic CIDs to catch
  any formatting changes
- header column order verification for --long with --size=true/false
- files without preserved metadata (---------- and - placeholders)
- directory output (trailing slash, d prefix in mode)

requested in: https://github.com/ipfs/kubo/pull/11103#issuecomment-3745043561

* fix(ls): improve --long flag docs and fix minor issues

- improved godocs for formatMode and formatModTime functions
- fixed permBit signature: char rune → char byte (avoids unnecessary cast)
- clarified help text: mode/mtime are optional UnixFS metadata
- documented that times are displayed in UTC
- fixed flaky time test by using 1 month ago instead of 1 hour
- removed hardcoded CID assertion that would break on DAG changes

* fix(ls): show "-" for missing mode in --long output

display "-" instead of "----------" when mode metadata is not preserved.
this avoids ambiguity with Unix mode 0000 and matches how missing mtime
is already displayed. follows common Unix tool conventions (ps, netstat)
where "-" indicates "not available".

---------

Signed-off-by: sneax <paladesh600@gmail.com>
Co-authored-by: Marcin Rataj <lidel@lidel.org>
2026-01-16 02:27:32 +01:00
..
v0.2.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.3.md docs: bulk spelling edits (#9544) 2023-02-20 23:37:10 +01:00
v0.4.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.5.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.6.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.7.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.8.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.9.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.10.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.11.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.12.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.13.md collection of typo fixes (#10647) 2025-01-13 18:55:10 +01:00
v0.14.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.15.md docs: bulk spelling edits (#9544) 2023-02-20 23:37:10 +01:00
v0.16.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.17.md docs: bulk spelling edits (#9544) 2023-02-20 23:37:10 +01:00
v0.18.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.19.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.20.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.21.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.22.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.23.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.24.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.25.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.26.md chore: update changelog 2024-01-22 14:35:53 +01:00
v0.27.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.28.md chore: update changelog for v0.28 2024-04-15 07:15:38 +00:00
v0.29.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.30.md feat: Add CI for Spell Checking (#10637) 2025-01-30 17:50:51 +01:00
v0.31.md feat(ci): reusable spellcheck from unified CI (#10873) 2025-08-14 00:35:35 +00:00
v0.32.md Update to boxo with refactored providerQueryManager. (#10595) 2024-11-26 03:34:06 -08:00
v0.33.md Merge remote-tracking branch 'origin/master' into merge-release-v0.33.2 2025-02-14 01:30:03 +01:00
v0.34.md docs: Fix typo in v0.34 changelog (#10771) 2025-04-01 07:26:38 -07:00
v0.35.md chore: spellcheck to avoid ai fix prs 2025-05-21 20:21:33 +02:00
v0.36.md fix typos in docs and comments (#10920) 2025-08-18 08:43:25 -07:00
v0.37.md docs: fix typo in v0.37 changelog 2025-08-27 20:33:02 +02:00
v0.38.md feat: enable DHT Provide Sweep by default (#10955) 2025-11-12 23:55:17 +01:00
v0.39.md docs: note sweep+accelerated DHT client limitation (#11084) 2025-11-28 23:10:56 +01:00
v0.40.md feat(cli): ls --long (#11103) 2026-01-16 02:27:32 +01:00