Commit Graph

45 Commits

Author SHA1 Message Date
Peter Steinberger
f9e3d30d2d
refactor: structure absolute directory failures 2026-05-07 10:32:16 +01:00
jesse-merhi
509076b3a2
docs: document absolute directory helper 2026-05-07 10:29:15 +01:00
sallyom
e335490a5b
add non-durable atomic write option
Signed-off-by: sallyom <somalley@redhat.com>
2026-05-07 10:26:06 +01:00
Peter Steinberger
71ec9f4c10
fix: detect stale move fallback sources 2026-05-07 10:17:11 +01:00
Peter Steinberger
354ba8e4c9
fix: preserve concurrent move fallback writes 2026-05-07 08:58:42 +01:00
Peter Steinberger
c382eafdb2
fix: fail closed on stale sidecar locks 2026-05-07 08:02:36 +01:00
Peter Steinberger
ce4137f028
test: harden external output coverage 2026-05-07 04:34:31 +01:00
jesse-merhi
f4a7bb1a65 feat: add safe external output writer 2026-05-07 03:05:05 +01:00
Peter Steinberger
f305c8be2b
fix(fs): preserve public path modes in guard refactor 2026-05-06 21:31:04 +01:00
Peter Steinberger
c2e5849039
docs(fs): document boundary guardrails 2026-05-06 21:21:42 +01:00
Peter Steinberger
039e3aa0c8
docs: document filesystem hardening 2026-05-06 20:57:25 +01:00
Peter Steinberger
91f7b74ad6
feat: add root JSON and durable queue helpers 2026-05-06 06:27:23 +01:00
Peter Steinberger
cbe59d156a
docs: package release docs 2026-05-06 04:54:18 +01:00
Peter Steinberger
1b78581bca
docs: add missing subpath pages 2026-05-06 04:19:53 +01:00
Peter Steinberger
409874b507
docs: refresh readme presentation 2026-05-06 03:39:50 +01:00
Peter Steinberger
cc0757aa82
refactor: split root internals and security test helpers 2026-05-06 03:29:31 +01:00
Peter Steinberger
90ffaf5168
fix: harden root path validation 2026-05-06 03:04:45 +01:00
Peter Steinberger
4a87bc4473
docs: clarify temp workspace and json store wording 2026-05-06 02:16:36 +01:00
Peter Steinberger
2e83f7d9b9
refactor: narrow low-level lock and pinned-open surface 2026-05-06 01:43:39 +01:00
Peter Steinberger
02b9a9d2ae
refactor: trim temp workspace surface 2026-05-06 01:26:06 +01:00
Peter Steinberger
542657b9d2
refactor: back temp workspaces with file stores 2026-05-06 01:17:03 +01:00
Peter Steinberger
b9434cd363
refactor: bind json state to file stores 2026-05-06 00:53:09 +01:00
Peter Steinberger
32acf97225
refactor: unify private file store 2026-05-06 00:37:14 +01:00
Peter Steinberger
be7de52292
docs: clarify store helper roles 2026-05-06 00:21:03 +01:00
Peter Steinberger
e210a26af2
feat: unify store helpers 2026-05-06 00:07:28 +01:00
Peter Steinberger
ff2e84aaea
feat: add persistent fs-safe python helper 2026-05-05 23:25:07 +01:00
Peter Steinberger
46c1b1d22c
docs: sharpen root positioning 2026-05-05 22:49:39 +01:00
Peter Steinberger
bd2749649a
refactor: align atomic and secret helpers 2026-05-05 22:37:01 +01:00
Peter Steinberger
49f1f54cc4
feat: serialize same-target writes 2026-05-05 22:32:11 +01:00
Peter Steinberger
43c6d2058e
docs: clarify fs-safe positioning 2026-05-05 22:23:26 +01:00
Peter Steinberger
722cb41390
feat: make archive dependencies optional 2026-05-05 22:19:59 +01:00
Peter Steinberger
60987f7055
refactor: narrow secret and temp surfaces 2026-05-05 21:51:31 +01:00
Peter Steinberger
146f0e77b6
refactor: keep json surface focused 2026-05-05 21:42:09 +01:00
Peter Steinberger
f4adfdf446
docs: clarify store and temp surfaces 2026-05-05 21:29:35 +01:00
Peter Steinberger
93e71d28af
refactor: narrow store and secret exports 2026-05-05 21:21:48 +01:00
Peter Steinberger
f76bbf892d
refactor: clarify private state store api 2026-05-05 21:07:07 +01:00
Peter Steinberger
e922b76069
refactor: tighten fs-safe public api 2026-05-05 20:57:44 +01:00
Peter Steinberger
2efb326c67
refactor: simplify fs-safe public surface 2026-05-05 20:39:16 +01:00
Peter Steinberger
86f05d6368
refactor: curate public fs-safe API 2026-05-05 20:24:42 +01:00
Peter Steinberger
7f2b962c92
docs: refresh for renamed APIs and new stores
Sync the docs site with recent source changes:

- json: writeJsonAtomic/writeTextAtomic → writeJson/writeText; readJsonFile/Strict
  → readJson + readJsonIfExists + tryReadJson; ensureDirMode → dirMode;
  appendTrailingNewline → trailingNewline.
- temp: createPrivateTempWorkspace/createTempFileTarget → tempWorkspace/tempFile;
  PrivateTempWorkspaceOptions → TempWorkspaceOptions; TempFileTarget → TempFile.
- atomic: replaceDirectoryStaged → replaceDirectoryAtomic; mode/dirMode names.
- root: read{Path → Absolute}; RootDefaults gains mode; per-method options pick
  mode through RootWriteOptions / RootCopyOptions / RootOpenWritableOptions.
- secret-file: writePrivateSecretFileAtomic gains mode/dirMode and now requires
  rootDir; documents the asserted-mode behavior on each component.
- sidecar-lock: SidecarLockHandle has [Symbol.asyncDispose]; document the new
  top-level withSidecarLock helper.

New pages:
- file-store.md — fileStore() + copyIntoRoot.
- json-store.md — jsonStore<T>() with optional cross-process lock.

Add a "Stores" section to the sidebar; update install.md subpath table to list
json-store, file-store, and local-roots.
2026-05-05 19:30:54 +01:00
Peter Steinberger
c73a672d37
fix: harden filesystem write fallbacks 2026-05-05 19:18:55 +01:00
Peter Steinberger
f0d61765f5
docs: add social card for fs-safe.io
1200×630 PNG (rendered from SVG) wired into og:image / twitter:image meta
on every page. Dark theme matches the site, shield mark + wordmark + tagline
+ url. Twitter card upgraded to summary_large_image.
2026-05-05 19:05:10 +01:00
Peter Steinberger
b3c6f4c336
feat: clean up root and temp workspace APIs 2026-05-05 18:29:53 +01:00
Peter Steinberger
59b91125a3
fix: harden archive and copy limits 2026-05-05 18:23:05 +01:00
Peter Steinberger
a559283ac5
docs: add fs-safe.io documentation site
- 25 markdown guides covering every public primitive: root(), pathScope(),
  reading/writing, atomic writes, JSON, temp workspaces, archive extraction,
  secret files, sidecar locks, pinned open, local roots, path/filename helpers,
  install paths, errors, types, testing, timing, contributing.
- Custom Node-based static site generator (scripts/build-docs-site.mjs) with
  link validation, dark mode, mobile nav, search, copy buttons.
- GitHub Actions workflow deploys to Pages on docs/script changes.
- CNAME points to fs-safe.io (DNS already configured to GitHub Pages IPs).

To activate: switch repo Pages source from legacy/branch to workflow.
2026-05-05 17:57:31 +01:00