ZDDC/shared
ZDDC b5b3c92905 feat(shared): cap.js client helpers for permission gating
Three small helpers under window.zddc.cap, wired into every tool's
build:

  cap.at(path)               — Promise<AccessView|null>. Fetches
                               /.profile/access?path=<urlpath> and
                               memoises per-path for the session.
                               Used by tools to gate top-of-page
                               affordances on path_verbs / path_is_admin
                               / path_can_elevate_grant.
  cap.has(node, verb)        — boolean. Reads the listing entry's
                               verbs string for the named verb.
                               Falls back to node.writable for 'w'
                               when verbs is absent (offline FS-API
                               listings or pre-promotion clients).
  cap.handleForbidden(resp,  — parses a 403 response's JSON body for
                  opts)        missing_verb and renders an error
                               toast. When opts.path is supplied AND
                               the path-scoped access view reports
                               path_can_elevate_grant covering the
                               missing verb, the toast appends an
                               "Elevate" button that flips the
                               elevation cookie and reloads.

Browse loader.js + tree.js carry the new verbs field through to the
node objects so context-menu gating can call cap.has(node, 'w'|'d')
without changing the legacy node.writable contract. New CSS rule
.zddc-toast__action styles the inline Elevate button.

Concatenation order: cap.js comes after toast.js + elevation.js so
the dependencies (window.zddc.toast, window.zddc.elevation) are
present at module-load time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 08:42:05 -05:00
..
fonts feat(typography): bake IBM Plex Sans + Source Serif 4 into every tool 2026-05-10 20:09:59 -05:00
vendor feat(browse): SPA overhaul — context menu, YAML editor, icons, hovercard, deep links, autofilter 2026-05-14 12:12:42 -05:00
base.css feat(browse): SPA overhaul — context menu, YAML editor, icons, hovercard, deep links, autofilter 2026-05-14 12:12:42 -05:00
build-lib.sh build: simplify to stable + exact-version (drop alpha/beta as public concepts) 2026-05-20 09:17:46 -05:00
cap.js feat(shared): cap.js client helpers for permission gating 2026-05-21 08:42:05 -05:00
context-menu.css feat(browse): SPA overhaul — context menu, YAML editor, icons, hovercard, deep links, autofilter 2026-05-14 12:12:42 -05:00
context-menu.js feat(browse): SPA overhaul — context menu, YAML editor, icons, hovercard, deep links, autofilter 2026-05-14 12:12:42 -05:00
elevation.css ui: fix admin-mode frame; drop project-stage strip 2026-05-18 16:39:35 -05:00
elevation.js feat(elevation): page-wide armed chrome when admin mode is on 2026-05-18 08:41:07 -05:00
favicon.svg feat(tools,build): in-flight HTML-tool reworks and build-infra updates 2026-04-29 12:52:27 -05:00
fonts.css feat(typography): bake IBM Plex Sans + Source Serif 4 into every tool 2026-05-10 20:09:59 -05:00
hash.js Initial commit 2026-04-27 11:05:47 -05:00
help.js Initial commit 2026-04-27 11:05:47 -05:00
icons.js feat(browse): SPA overhaul — context menu, YAML editor, icons, hovercard, deep links, autofilter 2026-05-14 12:12:42 -05:00
logo.css feat(shared): clickable logo links every tool's header to project home 2026-05-10 07:34:28 -05:00
logo.js feat(shared): clickable logo links every tool's header to project home 2026-05-10 07:34:28 -05:00
preview-lib.js chore: retire mdedit tool — markdown editor lives in browse now 2026-05-13 10:34:31 -05:00
theme.js Initial commit 2026-04-27 11:05:47 -05:00
toast.css feat(shared): cap.js client helpers for permission gating 2026-05-21 08:42:05 -05:00
toast.js feat(shared): route window.alert() to non-blocking toast 2026-05-10 19:30:36 -05:00
zddc-filter-test.html Initial commit 2026-04-27 11:05:47 -05:00
zddc-filter.js Initial commit 2026-04-27 11:05:47 -05:00
zddc-source.js refactor: virtual file extensions for subtree zip + MD conversion 2026-05-14 12:23:37 -05:00
zddc-test.html Initial commit 2026-04-27 11:05:47 -05:00
zddc.js feat: reviewing/ lifecycle — Plan Review endpoint, virtual received window, browse context-menu workflows 2026-05-15 16:08:04 -05:00
zip-source.js feat(archive,browse): treat .zip transmittal folders as folders + shared zip adapter 2026-05-12 12:29:14 -05:00