diff --git a/.gitignore b/.gitignore index f2298d9..321abef 100644 --- a/.gitignore +++ b/.gitignore @@ -23,16 +23,14 @@ test-results/ # New tool dist files must be force-added: git add -f tool/dist/tool.html dist/ -# Release artifacts under website/releases/ ARE committed — including -# zddc-server binaries. Per-version HTML tool files (_v.html) -# and per-version zddc-server binaries (zddc-server_v_) -# are immutable real files; partial-version pins (_v.html, -# _v.html, zddc-server_v_, zddc-server_v_) -# and channel mirrors (_.html, zddc-server__) -# are checked-in symlinks. The lockstep build (shared/build-lib.sh -# promote_release + promote_zddc_server) maintains both chains. Everything -# serves from zddc.varasys.io/releases/; no Codeberg release-asset -# publication anymore. +# The website (hand-edited index.html / reference.html / css/ / js/ / img/ +# plus all release artifacts) lives in the orphan `website` branch of this +# same Codeberg repo. A `git worktree` of that branch is typically checked +# out at ~/src/zddc-website/ and is what the system Caddy serves at +# zddc.varasys.io. The lockstep build pipeline writes release artifacts +# directly to ~/src/zddc-website/releases/ (override with +# $ZDDC_DEPLOY_RELEASES_DIR). zddc-server binaries are LFS-tracked on +# the website branch; HTML tools + symlinks stay in regular git. # IDE and project files .opencode/ diff --git a/AGENTS.md b/AGENTS.md index b7d10fc..544ed7c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,8 +4,8 @@ ```bash # Dev build: 5 HTML tools + cross-compile zddc-server binaries + regen the -# matrix at website/releases/index.html. dist/ artifacts only — no -# website/releases/ side-effect for the build outputs themselves. +# matrix at ~/src/zddc-website/releases/index.html. dist/ artifacts only — no +# new per-version files / symlink updates in the website worktree. sh build.sh # Build a single HTML tool (archive | transmittal | classifier | mdedit | landing) @@ -44,7 +44,7 @@ The build ends with a **channel-link verifier** that asserts every `_{stable,beta,alpha}.html` (and zddc-server's per-platform binary mirrors + stub pages) resolves. Build fails if any link is dangling. Bootstrap-friendly: zddc-server checks are skipped until the first -`--release` cut materializes the binaries under `website/releases/`. +`--release` cut materializes the binaries under `~/src/zddc-website/releases/`. ## Architecture @@ -67,16 +67,19 @@ shared/ build-lib.sh POSIX sh helpers (ensure_exists, concat_files, build_timestamp) sourced by every tool's build.sh via: . "$root_dir/../shared/build-lib.sh" -website/ - index.html hand-edited intro page + install snippets (root URL) - releases/ - index.html versions index, regenerated by build.sh from filesystem scan - _v.html real per-version files (committed, immutable) - _v.html -> ... symlink: latest patch within X.Y.* - _v.html -> ... symlink: latest within X.*.* - _stable.html -> ... symlink: current stable - _beta.html -> ... symlink to stable (or real bytes if active beta) - _alpha.html -> ... symlink to beta/stable (or real bytes if active alpha) +# Website lives on the `website` orphan branch of this same repo +# (NOT in main's tree). Worktree typically at ~/src/zddc-website/: +# index.html, reference.html, css/, js/, img/ hand-edited content +# releases/ +# index.html regenerated by `sh build.sh` +# _v.html per-version (committed, immutable) +# _v.html -> ... symlink chain (regular git symlinks) +# _stable.html -> ... channel mirror, follows latest stable +# _{beta,alpha}.html -> ... channels (cascade to stable when idle) +# zddc-server_v_ per-platform binary (LFS-tracked) +# zddc-server__ channel binary mirror (symlink) +# zddc-server_.html stub page surfacing 4 platform DLs +# .gitattributes LFS rules for binaries helm/ zddc-server-prod/ production-shaped Helm chart (compiles from source via init container) @@ -84,9 +87,9 @@ helm/ README.md chart design rationale + quick-start ``` -**Critical:** `dist/` files are gitignored. They're the canonical built artifact for testing and the source for `--release` writes into `website/releases/`, but they aren't checked in. Never edit them directly. +**Critical:** `dist/` files are gitignored. They're the canonical built artifact for testing and the source for `--release` writes into `~/src/zddc-website/releases/`, but they aren't checked in. Never edit them directly. -`website/releases/` IS committed — per-version HTML and per-version zddc-server binaries as real bytes, partial-version pins (`_v`, `_v`) and channel mirrors (`_stable`, `_beta`, `_alpha`) as symlinks. `shared/build-lib.sh` provides `promote_release` (HTML tools) and `promote_zddc_server` (binaries + matching stub pages); the top-level `build.sh --release` calls them in lockstep. zddc-server binaries live in this repo too — there's no Codeberg release-asset publication anymore; everything serves from `zddc.varasys.io/releases/`. +**Release artifacts live on the `website` orphan branch** of this same Codeberg repo, not on `main`. A `git worktree` of that branch — typically at `~/src/zddc-website/` — is what the system Caddy bind-mounts and serves at `zddc.varasys.io/`. The build pipeline writes its release outputs to `${ZDDC_DEPLOY_RELEASES_DIR:-$HOME/src/zddc-website/releases}` directly, then the operator commits + pushes that worktree separately from `main`. Per-version HTML and per-version zddc-server binaries are real bytes (binaries are LFS-tracked; HTML stays regular git); partial-version pins (`_v`, `_v`) and channel mirrors (`_stable`, `_beta`, `_alpha`) are symlinks. `shared/build-lib.sh` provides `promote_release` (HTML tools) and `promote_zddc_server` (binaries + matching stub pages); the top-level `build.sh --release` calls them in lockstep. No Codeberg release-asset publication anymore; everything serves from `zddc.varasys.io/releases/`. ## Shared CSS (`shared/base.css`) @@ -172,13 +175,13 @@ Format: `trackingNumber_revision (status) - title.extension` - Conventional commits: `feat(archive): ...`, `fix(transmittal): ...` - Release tags: `-v` per tool, all six sharing the same X.Y.Z on a coordinated cut (e.g. `archive-v0.0.8`, `transmittal-v0.0.8`, `classifier-v0.0.8`, `mdedit-v0.0.8`, `landing-v0.0.8`, `zddc-server-v0.0.8`) - Commit dist files: `git add -f tool/dist/tool.html` -- Commit zddc-server binaries (per-version + symlinks): they live under `website/releases/` like every other release artifact +- Commit zddc-server binaries (per-version + symlinks) on the `website` branch's worktree (`~/src/zddc-website/releases/`) — they're LFS-tracked there alongside the HTML tool releases. Push that branch separately from `main` ### Releasing — lockstep, channels, layout **Lockstep convention.** Every release cut bumps all six artifacts (5 HTML tools + zddc-server) to the same version, even if a tool didn't change. Per-tool independent versions are gone. The coordinated next-stable target is `max(latest tag across all six tools) + 1` — `_coordinated_next_stable` in `shared/build-lib.sh`. Channel cuts (alpha/beta) follow the same lockstep — every tool's channel mirror is overwritten in step. Three channels, ordered: **alpha** (dev iteration) → **beta** (general testing) → **stable** (ship). -**Storage model.** All release artifacts live under `website/releases/` and are served from `zddc.varasys.io/releases/`. No Codeberg release assets, no third-party mirrors. +**Storage model.** All release artifacts live under the `website` orphan branch of this repo (worktree typically at `~/src/zddc-website/releases/`) and are served from `zddc.varasys.io/releases/`. The `website` branch's history is independent of `main`. No Codeberg release assets, no third-party mirrors. | Artifact | Type | Layout | |---|---|---| @@ -190,12 +193,12 @@ Format: `trackingNumber_revision (status) - title.extension` | `zddc-server_.html` | generated stub page | per-version / per-channel; lists the four platform downloads. This is what the matrix-cell link points at — one stub fans out to four binaries | | `index.html` | regenerated by `build.sh` | matrix table, one column per tool, one row per release | -**Single point of truth.** `sh build.sh --release` is the canonical lockstep cut. It forwards each HTML tool's build with the agreed version, then `promote_zddc_server` (in `shared/build-lib.sh`) copies the freshly cross-compiled binaries into `website/releases/` with the matching symlink chain, then `write_zddc_server_stubs_all` regenerates every stub page, then `build_releases_index` rewrites the matrix, then `verify_channel_links` asserts nothing dangles. +**Single point of truth.** `sh build.sh --release` is the canonical lockstep cut. It forwards each HTML tool's build with the agreed version, then `promote_zddc_server` (in `shared/build-lib.sh`) copies the freshly cross-compiled binaries into `~/src/zddc-website/releases/` with the matching symlink chain, then `write_zddc_server_stubs_all` regenerates every stub page, then `build_releases_index` rewrites the matrix, then `verify_channel_links` asserts nothing dangles. - **Stable** (`sh build.sh --release` or `--release X.Y.Z`): Writes per-version HTML for the five HTML tools + per-version binaries for zddc-server (real bytes, immutable). Refreshes 5 symlinks per HTML tool + 5 symlinks per zddc-server platform → the new version. Tags all six: `-v`. Cascade: stable cut means beta and alpha both reset to stable for every tool. Skips silently if source for an HTML tool hasn't changed since the latest stable tag (the binary always builds). - **Beta** (`sh build.sh --release beta`): Overwrites `_beta.html` with dist bytes for each HTML tool, and `zddc-server_beta_` with each platform's binary. Cascade: `_alpha.html` → `_beta.html` and `zddc-server_alpha_` → `zddc-server_beta_` (symlinks). No tag. - **Alpha** (`sh build.sh --release alpha`): Overwrites only the alpha mirrors, all six tools. No tag, no other side-effects. -- **Plain dev builds** (no `--release`): produce `tool/dist/.html` for HTML tools and `zddc/dist/zddc-server-` binaries; do NOT touch `website/releases/`. The matrix index and stub pages still get regenerated from whatever `website/releases/` contains, so the build is idempotent for repeated dev runs. +- **Plain dev builds** (no `--release`): produce `tool/dist/.html` for HTML tools and `zddc/dist/zddc-server-` binaries; do NOT touch `~/src/zddc-website/releases/`. The matrix index and stub pages still get regenerated from whatever `~/src/zddc-website/releases/` contains, so the build is idempotent for repeated dev runs. On-page `{{BUILD_LABEL}}` format (HTML tools only — zddc-server's version comes from the binary itself): @@ -300,7 +303,7 @@ zddc-server ships as a cross-compiled binary, not a container image. There's no (cd zddc && go run ./cmd/zddc-server) ``` -The repo's top-level `sh build.sh` cross-compiles the four release binaries (linux/amd64, darwin/amd64, darwin/arm64, windows/amd64) into `zddc/dist/` via a containerized Go toolchain (podman or docker). On `--release` it also promotes those binaries to `website/releases/` with the matching symlink chain and stub pages — same lockstep flow as the HTML tools. +The repo's top-level `sh build.sh` cross-compiles the four release binaries (linux/amd64, darwin/amd64, darwin/arm64, windows/amd64) into `zddc/dist/` via a containerized Go toolchain (podman or docker). On `--release` it also promotes those binaries to `~/src/zddc-website/releases/` with the matching symlink chain and stub pages — same lockstep flow as the HTML tools. ### Run (development) @@ -331,7 +334,7 @@ ZDDC_ROOT=/path/to/your/archive ZDDC_TLS_CERT=none ZDDC_ADDR=:8080 \ ### Release tagging -zddc-server has no separate release script anymore. The top-level `sh build.sh --release [version|alpha|beta]` is the canonical path: it cross-compiles the binaries inside the containerized Go toolchain, copies them into `website/releases/` with the lockstep symlink chain (one set of symlinks per platform), regenerates the per-version + per-channel stub pages, refreshes the matrix, and tags `zddc-server-v` alongside the five HTML-tool tags. +zddc-server has no separate release script anymore. The top-level `sh build.sh --release [version|alpha|beta]` is the canonical path: it cross-compiles the binaries inside the containerized Go toolchain, copies them into `~/src/zddc-website/releases/` with the lockstep symlink chain (one set of symlinks per platform), regenerates the per-version + per-channel stub pages, refreshes the matrix, and tags `zddc-server-v` alongside the five HTML-tool tags. ```sh sh build.sh --release # lockstep stable, coordinated next version diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index f0b3a1e..65e78fa 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -33,20 +33,23 @@ tool/ tool.html # Generated output — never edit this manually ``` -Website files (what `zddc.varasys.io` serves) — committed in this repo as static assets, including the per-version HTML tool files AND the per-version zddc-server binaries: +Website files (what `zddc.varasys.io` serves) live on the **`website` orphan branch** of this same Codeberg repo, separate from `main`. A `git worktree` of that branch — typically at `~/src/zddc-website/` — is what the system Caddy bind-mounts and serves. The build pipeline writes release artifacts directly to that worktree's `releases/` subdir: ``` -website/ +~/src/zddc-website/ (git worktree of `website` branch) index.html # hand-edited intro page + install snippets (root URL) + reference.html # hand-edited file-naming convention spec + css/, js/, img/ # hand-edited static assets + .gitattributes # LFS rules: zddc-server_*-{amd64,arm64,*.exe} releases/ - index.html # matrix table, regenerated by build.sh from filesystem scan + index.html # matrix-style download page, regenerated by build.sh _v.html # real per-version HTML (committed, immutable) _v.html → ... # symlink: latest patch within X.Y.* _v.html → ... # symlink: latest within X.*.* _stable.html → ... # symlink: current stable HTML _beta.html → ... # symlink to stable (or real bytes when active beta dev) _alpha.html → ... # symlink to beta/stable (or real bytes when active alpha dev) - zddc-server_v_ # real per-version cross-compiled binary + zddc-server_v_ # real per-version cross-compiled binary (LFS-tracked) zddc-server_v_ → ... # symlink chain (mirrors the HTML cascade per platform) zddc-server_v_ → ... zddc-server__ → ... # channel mirror per platform @@ -57,7 +60,7 @@ website/ Every URL under `/releases/` resolves directly via the symlink chain — no `manifest.json`, no Caddy regex-rewrite, no JavaScript indirection, no third-party mirror. Caddy serves these as plain static files. The Docker-tag pattern: `:1.2.3` is pinned, `:1.2` floats, `:1` floats further, `:stable` floats furthest, and `:beta` / `:alpha` are mutable channel mirrors that overwrite in place. -**zddc-server binaries live in this repo too** — committed under `website/releases/`, served from `zddc.varasys.io/releases/`. No Codeberg release assets, no separate distribution channel. The `helm/zddc-server-{prod,dev}/` charts build from source via init container, but operators who want a prebuilt binary just `curl -O https://zddc.varasys.io/releases/zddc-server_stable_linux-amd64`. The single matrix-cell link per release points at `zddc-server_.html`, a small generated stub that surfaces all four platform downloads. +**zddc-server binaries live in this repo too** — committed under `~/src/zddc-website/releases/`, served from `zddc.varasys.io/releases/`. No Codeberg release assets, no separate distribution channel. The `helm/zddc-server-{prod,dev}/` charts build from source via init container, but operators who want a prebuilt binary just `curl -O https://zddc.varasys.io/releases/zddc-server_stable_linux-amd64`. The single matrix-cell link per release points at `zddc-server_.html`, a small generated stub that surfaces all four platform downloads. There is no `website/dev/`. To preview a build locally, open `dist/tool.html` directly via the dev server. To publish on `zddc.varasys.io`, cut a release. @@ -73,14 +76,14 @@ Each topic has exactly one authoritative home; everything else links to it. |---|---|---| | What ZDDC is + tool channel links + dual-mode (local/server) overview + install snippets | `website/index.html` (hand-edited intro for `zddc.varasys.io/`) | repo `README.md`, `zddc/README.md` | | File-naming convention spec (status codes, modifiers, folder format) | `website/reference.html` | repo `README.md`, in-tool help text | -| Versions + channel builds index of every tool | `website/releases/index.html` (regenerated by `build.sh`) | website intro nav, "Browse all versions" link | +| Versions + channel builds index of every tool | `~/src/zddc-website/releases/index.html` (regenerated by `build.sh`) | website intro nav, "Browse all versions" link | | Customer-deployment install (`zddc-server` binary embeds current-stable tools; `.zddc apps:` cascade overrides; cache at `/_app/`) | `zddc/README.md` "Apps: virtual tool HTMLs" section | website intro, `AGENTS.md` | | zddc-server operations: env vars, ACL syntax, `.archive` URLs, container vs binary | `zddc/README.md` | `AGENTS.md`, website intro | | Build / release / channel commands | `AGENTS.md` | repo `README.md` ("see AGENTS.md") | | Architecture & internal patterns | `ARCHITECTURE.md` (this file) | `AGENTS.md` | | Per-tool internal design quirks | `/README.md` | (linked from website intro tool cards) | -`website/index.html` is **hand-edited static content** (analogous to `reference.html`), not the landing-tool output. The install section points operators at two paths: **local** (download a `.html` file from `/releases/`) and **server** (run `zddc-server`; current-stable builds of all five tools are baked into the binary at compile time via `//go:embed`). The landing tool's released bytes live at `website/releases/landing_v.html`; the embedded copy serves at the deployment root by default. The public website at `zddc.varasys.io/` is the same hand-edited `index.html` — its root URL is the introduction page, not the project picker (because there are no projects to pick from a static site). +`index.html` on the `website` branch (working dir `~/src/zddc-website/index.html`) is **hand-edited static content** (analogous to `reference.html`), not the landing-tool output. The install section points operators at two paths: **local** (download a `.html` file from `/releases/`) and **server** (run `zddc-server`; current-stable builds of all five tools are baked into the binary at compile time via `//go:embed`). The landing tool's released bytes live at `~/src/zddc-website/releases/landing_v.html`; the embedded copy serves at the deployment root by default. The public website at `zddc.varasys.io/` is the same hand-edited `index.html` — its root URL is the introduction page, not the project picker (because there are no projects to pick from a static site). When updating documentation, prefer linking over duplicating. If you find yourself rewriting the file-naming convention in a tool's README, link to `reference.html` instead. @@ -96,15 +99,15 @@ Each HTML tool's `build.sh`: 2. Reads JS files in declaration order, concatenates them 3. Processes `template.html` with `awk`, replacing `{{PLACEHOLDER}}` markers with the concatenated content and stripping CDN ` - - diff --git a/website/js/layout.js b/website/js/layout.js deleted file mode 100644 index c86c926..0000000 --- a/website/js/layout.js +++ /dev/null @@ -1,126 +0,0 @@ -// Simple tab switching for ZDDC site -// Include via at end of - -(function () { - 'use strict'; - - // Theme system - const themeKey = 'zddc-theme'; - const themes = ['system', 'light', 'dark']; - let currentThemeIndex = 0; - - // SVG icons for theme toggle - const icons = { - system: '', - light: '', - dark: '' - }; - - function getStoredTheme() { - const stored = localStorage.getItem(themeKey); - if (stored && themes.includes(stored)) { - return stored; - } - return 'system'; - } - - function setThemeIndex(index) { - currentThemeIndex = index; - const theme = themes[index]; - applyTheme(theme); - } - - function applyTheme(theme) { - if (theme === 'light') { - document.documentElement.setAttribute('data-theme', 'light'); - } else if (theme === 'dark') { - document.documentElement.setAttribute('data-theme', 'dark'); - } else { - document.documentElement.removeAttribute('data-theme'); - } - localStorage.setItem(themeKey, theme); - updateToggleIcon(); - } - - function updateToggleIcon() { - const btn = document.querySelector('.theme-toggle'); - if (!btn) return; - const theme = themes[currentThemeIndex]; - btn.innerHTML = icons[theme]; - btn.setAttribute('aria-label', 'Toggle theme (current: ' + theme + ')'); - } - - function cycleTheme() { - currentThemeIndex = (currentThemeIndex + 1) % themes.length; - setThemeIndex(currentThemeIndex); - } - - function createToggle() { - const toggle = document.createElement('button'); - toggle.className = 'theme-toggle'; - toggle.setAttribute('aria-label', 'Toggle theme'); - toggle.onclick = cycleTheme; - return toggle; - } - - // Apply stored theme early (before DOM queries) - const storedTheme = getStoredTheme(); - currentThemeIndex = themes.indexOf(storedTheme); - if (currentThemeIndex === -1) currentThemeIndex = 0; - applyTheme(storedTheme); - - // Create and inject toggle button after DOM ready - document.addEventListener('DOMContentLoaded', function () { - const toggle = createToggle(); - const headerNav = document.querySelector('.header-nav'); - - if (headerNav) { - // Priority 1: .header-nav — append as last child (after Docs link) - headerNav.appendChild(toggle); - } else { - const navTabs = document.querySelector('.nav-tabs'); - if (navTabs) { - // Priority 2: .nav-tabs — insert as sibling AFTER .nav-tabs - navTabs.parentNode.insertBefore(toggle, navTabs.nextSibling); - } else { - const headerContent = document.querySelector('.header-content'); - if (headerContent) { - // Priority 3: .header-content — append as last child - headerContent.appendChild(toggle); - } - } - } - updateToggleIcon(); - }); - - // Dropdown: click toggle for touch devices (CSS :hover handles desktop) - document.addEventListener('DOMContentLoaded', function () { - document.querySelectorAll('.dropdown-toggle').forEach(function (btn) { - btn.addEventListener('click', function (e) { - e.stopPropagation(); - var menu = btn.closest('.dropdown').querySelector('.dropdown-menu'); - if (menu) menu.classList.toggle('show'); - }); - }); - document.addEventListener('click', function () { - document.querySelectorAll('.dropdown-menu.show').forEach(function (m) { - m.classList.remove('show'); - }); - }); - }); - - // Tab switching (unchanged) - document.querySelectorAll('button[data-tab]').forEach(btn => { - btn.addEventListener('click', () => { - document.querySelectorAll('button[data-tab]').forEach(b => b.classList.remove('active')); - btn.classList.add('active'); - - const tab = btn.dataset.tab; - if (tab === 'reference') { - if (window.location.pathname.endsWith('index.html')) { - window.location.hash = ''; - } - } - }); - }); -})(); diff --git a/website/reference.html b/website/reference.html deleted file mode 100644 index a001667..0000000 --- a/website/reference.html +++ /dev/null @@ -1,1024 +0,0 @@ - - - - - - Technical Reference — Zero Day Document Control (ZDDC) - - - - - - - - - - - - - - - - -
-

Technical Reference

-

- Complete specification for the ZDDC information management convention. Sections 2–7 cover file naming. Sections 8–9 cover folder naming and the transmittal workflow. -

-
- - -
- - - - -
- -
-

1. Overview

-

ZDDC — Zero Day Document Control — is an information management convention built on two rules:

-
    -
  • File naming — every deliverable filename encodes its tracking number, revision, status, and title. This makes each file self-describing and independently searchable without opening it.
  • -
  • Folder naming — transmittal folders follow the same convention, date-prefixed so they sort chronologically and can be searched by the tracking numbers of the deliverables they contain.
  • -
-

Together, these two rules mean a plain folder on any shared drive becomes a fully searchable, auditable information management system. No server, no database, no software required to read the archive.

-

Because every deliverable is self-describing — its identity, revision, and status encoded in the filename itself — the convention works across organisational boundaries without requiring a shared platform. A project adopting ZDDC can extend the same convention to its clients, subcontractors, vendors, and any other party in the project ecosystem. Each party maintains their own archive; the shared naming convention makes every archive mutually intelligible. Adoption can be voluntary or contractually required. The result is a globally scalable, distributed information management system built on nothing more than agreed file naming and standard directory structures.

-

The four tools implement interfaces around this structure — but they're optional. The structure works without them, and any party can participate using only their file browser.

-
-

Convention harmonization. The convention is designed to be applied at multiple organisational scopes simultaneously — corporate, client, project, department — and the code registries at each scope should be harmonized so they do not conflict. A corporate discipline code such as HR (Human Resources) does not exist at the project level, so there is no clash. But a code that means one thing corporately and something different on a project would create ambiguity in a unified archive. The ideal is that conventions flow down: corporate establishes the master code registry, projects inherit it and extend it only where gaps exist, and no code is reused with a different meaning at a lower scope.

-
-
-

A note on terminology. "Document control" is the traditional term for managing the flow of project information, inherited from an era when a document meant a literal piece of paper. Today the same discipline applies to any file or dataset — PDFs, models, spreadsheets, native CAD files — and the field has increasingly adopted the term information management to reflect this. ZDDC uses the word deliverable throughout: anything with a tracking number and a revision history, regardless of file format or medium.

-
-
- - -
-

2. Filename format

-

The ABNF-like grammar below is a formal machine-readable definition of the filename format — primarily useful for parsers and AI systems. The human-readable explanation of each field follows in the sections below.

-
-filename = trackingNumber "_" revision " (" status ") - " title "." extension -trackingNumber = field *("-" field) -field = 1*(%x41-5A / %x30-39) ; uppercase alpha or digit; no spaces, no underscores -revision = ["~"] baseRevision ["+" modifier] -baseRevision = letterRev / numberRev / dateRev -letterRev = 1*%x41-5A ; A, B, C… — design/review phase -numberRev = 1*%x30-39 ; 0, 1, 2… — construction/record phase -dateRev = 4DIGIT "-" 2DIGIT "-" 2DIGIT ; YYYY-MM-DD — recurring/living deliverables -modifier = modLetter 1*%x30-39 ; e.g. C1, N2, Q1, B1 -modLetter = "C" / "N" / "Q" / "B" -status = "IFA" / "IFB" / "IFC" / "IFD" / "IFI" / "IFP" / "IFR" / "IFU" / "REC" - / "RSA" / "RSB" / "RSC" / "RSD" / "RSI" - / "---" -; Constraint: RSA / RSB / RSC / RSD / RSI (review status codes) are only valid -; when modifier is present (i.e. on +C and +Q files). -; "---" indicates no status assigned; used on working drafts. -
-

Rules:

-
    -
  • Tracking number: no spaces, no underscores, hyphens as separators only
  • -
  • Underscore _ separates tracking number from revision
  • -
  • Revision: no spaces; may include ~ prefix and/or + modifier
  • -
  • Space before (status)
  • -
  • Space-dash-space - before title
  • -
  • Extension is the original file extension, preserved exactly
  • -
- -

Anatomy (from left to right):

-
- 123456-EL-SPC-2623 - _ - B - - (IFC) - - - Specification For Switchgear.pdf -
- -

Real examples:

-
-123456-EM-MDL-0001_A (IFR) - Master Deliverables List.pdf -123456-EL-SPC-2623_A (IFR) - Specification For Switchgear.pdf -123456-EL-ARR-0003_A+C1 (RSB) - Electrical Room Equipment Arrangement.pdf -123456-EL-ARR-0003_0 (IFC) - Electrical Room Equipment Arrangement.pdf -123456-ME-RFI-0024_A (IFR) - Mechanical Room Size RFI.pdf -
-
- - -
-

3. Tracking numbers

-

A tracking number is a deliverable's permanent identifier. It never changes — regardless of revision, status, or content changes. Think of it like a passport number: your name can change, your passport number doesn't.

-

No spaces, no underscores — hyphens as separators only. Format is yours to define; it must be consistent within the scope it covers.

- -

Field definitions (in order)

-

Tracking numbers are composed of the following fields, in order:

-
    -
  • originator — Organizational unit responsible for the deliverable
  • -
  • project — Project identifier; 000000 reserved for corporate-scope deliverables
  • -
  • [phase] — Optional phase code (e.g., P1, P2)
  • -
  • [area] — Optional area/budget code
  • -
  • discipline — Engineering or functional group (e.g., EL, ME, CV, PM)
  • -
  • type — Document category within discipline
  • -
  • sequence — Zero-padded integer
  • -
  • [suffix] — Optional hyphenated suffix for appendices or sheets
  • -
- -

Schema rules

-

Choose the schema that matches your structure. The fields within brackets [ ] are optional and must be omitted consistently across all tracking numbers when not used.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Schema namePatternExample
Basicoriginator-project-discipline-type-sequenceACME-123456-EL-SPC-2623
With Areasoriginator-project-area-discipline-type-sequenceACME-123456-B02-EL-SPC-2623
With Phasesoriginator-phase-project-discipline-type-sequenceACME-P1-123456-EL-SPC-2623
Corporateoriginator-000000-discipline-type-sequenceACME-000000-QA-PROC-0042
- -
-

Rule: 000000 placeholder. The Corporate schema uses 000000 as a reserved project placeholder, indicating the document belongs to the originator's corporate library rather than a specific project. The same originator code and discipline/type conventions apply, so corporate documents sort naturally alongside project documents in a unified archive.

-
- -

Discipline codes

-

Discipline codes identify the engineering or functional group responsible for the document. They are defined per project and should be documented in the Master Deliverables List.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DisciplineDescription
ELElectrical
MEMechanical
CVCivil
PMProject Management
QAQuality Assurance
PCProcurement
- -

Type codes

-

Type codes identify the document category within a discipline. Type codes are scoped per discipline — the same code may mean different things in different disciplines.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DisciplineTypeDescription
ELSPCSpecification
DWGDrawing
RPTReport
MESPCSpecification
MEMOMemorandum
PMMOMMinutes of Meeting
- -

Rule: Avoid ambiguity. On multi-discipline projects, type codes with overlapping meanings should be avoided or a cross-discipline registry should be agreed upon and documented.

- -

Sequence numbers

-

Sequence numbers make the tracking number unique given all the preceding fields. Use zero-padded integers (e.g., 0001, 0042).

-

A suffix separated by a hyphen can denote appendices or sheets that are structural parts of the same deliverable:

-
-ACME-123456-EL-SPC-2623 ← base document -ACME-123456-EL-SPC-2623-A ← Appendix A -ACME-123456-EL-SPC-2623-B ← Appendix B -ACME-123456-EL-SPC-2623-01 ← Sheet 1 of a multi-sheet drawing -ACME-123456-EL-SPC-2623-02 ← Sheet 2
-
-

Suffix vs. attachment rule: Use a suffix only for content that is a structural part of the deliverable (appendices, sheets). Files that accompany but are independent of the deliverable should be filed as separate documents with their own tracking numbers — not as suffixes.

-
- -
-

Search benefit: Because discipline and type are embedded in every filename, your file browser's search box is already a filter. Search EL-SPC to find all electrical specifications. Sort by name and every document groups with its full history.

-
-
- - -
-

4. Revisions

-

The revision field indicates the iteration stage of the deliverable. It consists of an optional ~ draft prefix, a base revision, and an optional + modifier.

- -

Base revision types

-

Base revisions are one of three types: letter revisions (A, B, C...), number revisions (0, 1, 2...), or date-based revisions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeFormatPhaseSort behavior
Letter revision[A-Z]+Design/review phaseSorts before number revisions ( lexical)
Number revision[0-9]+Construction/record phaseSorts after letter revisions ( lexical)
Date revisionYYYY-MM-DDRecurring or living documentsSorts chronologically (ISO 8601)
- -

Letter revisions (design/review phase)

-

Letter revisions are used during the design and review phase. They sort lexically, so A < B < C, etc.

- - - - - - - - - - - - - - - - - - - - - - -
RevisionMeaning
AFirst issued revision
BSecond issued revision
C, D, …Subsequent revisions
- -

Number revisions (construction/record phase)

-

Number revisions are used after approval, typically at the Issued For Construction (IFC) stage. They sort lexically after letter revisions.

- - - - - - - - - - - - - - - - - - -
RevisionMeaning
0First numeric revision (typically after approval, IFC)
1, 2, …Subsequent numeric revisions
- -

Date-based revisions

-

Date-based revisions apply to documents that are updated in place under a single permanent tracking number, where the date of the revision is the most meaningful piece of information a reader needs.

- -

Rule: Two use cases for date-based revisions:

-
    -
  1. Recurring documents — issued on a fixed cadence (e.g., meeting minutes). The tracking number is fixed; the revision identifies which occurrence.
  2. -
  3. Living documents — issued on demand (e.g., schedules, risk registers). The tracking number is fixed; the revision indicates freshness.
  4. -
- -

Rule: Contra-indication. Documents that get a new tracking number each period (e.g., monthly progress reports where each month is a distinct deliverable) use normal letter and number revisions, not date-based revisions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CadenceRevision formatExample
QuarterlyYYQX25Q1 = Q1 2025
MonthlyYYMM2503 = March 2025
Twice monthlyYYMM-XX2503-01, 2503-02
DailyYYYY-MM-DD2025-03-14 = 14 March 2025
- -
- -ACME-123456-PM-MOM-0001_2503 (IFI) - Project Steering Committee Minutes.pdf -ACME-123456-PM-MOM-0001_2504 (IFI) - Project Steering Committee Minutes.pdf -ACME-123456-PM-MOM-0001_2505 (IFI) - Project Steering Committee Minutes.pdf - - -ACME-123456-PM-SCH-0001_2503-07 (IFI) - Master Project Schedule.pdf -ACME-123456-PM-SCH-0001_2503-21 (IFI) - Master Project Schedule.pdf -ACME-123456-PM-SCH-0001_2505-14 (IFI) - Master Project Schedule.pdf - - -ACME-123456-PM-MLT-0001_2503-07 (IFI) - Critical Milestones Table.pdf -ACME-123456-PM-MLT-0001_2506-02 (IFI) - Critical Milestones Table.pdf
-

Date-based revisions sort lexically in the correct chronological order — your file browser will list them in date order when sorted by name.

-
- - -
-

5. Draft prefix (~)

-

The ~ prefix indicates a working draft, not yet formally issued.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldMeaningEffect on filename
~ positionPrepends the base revision_~A, ~B
Sort positionSorts after the base revision~B sorts after B
Status fieldIntended status when issuedShows what status the draft will carry when issued
- -

Examples:

-
-123456-EL-SPC-2623_~A (IFR) - Working draft — will be issued for review -123456-EL-SPC-2623_A (IFR) - Rev A — formally issued for review -123456-EL-SPC-2623_~B (IFC) - Working draft of Rev B, for construction -123456-EL-SPC-2623_B (IFA) - Rev B — issued for approval -123456-EL-SPC-2623_~0 (IFC) - Working draft ofRev 0, construction issue -123456-EL-SPC-2623_0 (IFC) - Rev 0 — Issued For Construction
-
- - -
-

6. Revision modifiers (+)

-

Revision modifiers associate a file with a base revision without incrementing the revision. Used for comments, backup material, native source files, and quality records. Sorts after the base revision in alphabetical order.

- -

The number after the modifier letter — +C1, +C2, and so on — is simply a sequence counter for uniqueness. If two reviewers each return a separate set of comments, they become +C1 and +C2. The same applies to all modifiers: the number distinguishes multiple files of the same type attached to the same revision.

- -

Modifier table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ModifierMeaningTypical statusSort position
+C1, +C2Comments on the base revisionRSA RSB RSC RSDAfter base revision
+B1, +B2Backup material supporting base contentIFIAfter base revision
+N1, +N2Native format files (editable source, e.g., CAD or source files)IFIAfter base revision
+Q1, +Q2Quality check recordsRSA RSIAfter base revision
- -
-

Every project team already does the things described below. ZDDC just gives each one a consistent place in the filename. Start with the formal revisions — the rest follows naturally.

- -

The formal revisions

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FilenameWhat it is
123456-EL-SPC-2623_~A (IFR)Working draft — intended for issue for review
123456-EL-SPC-2623_A (IFR)Rev A — formally issued for review
123456-EL-SPC-2623_~B (IFR)Working draft of Rev B, incorporating reviewer comments
123456-EL-SPC-2623_B (IFA)Rev B — issued for approval
123456-EL-SPC-2623_~0 (IFC)Working draft of construction issue
123456-EL-SPC-2623_0 (IFC)Rev 0 — Issued For Construction
123456-EL-SPC-2623_~1 (IFC)Working construction revision — field change
123456-EL-SPC-2623_1 (IFC)Rev 1 — construction revision issued
123456-EL-SPC-2623_~2 (REC)Working as-built — being prepared for record
123456-EL-SPC-2623_2 (REC)Rev 2 — Issued For Record (as-built)
-
- -

+ Native source files

-

Native source files are saved alongside the published PDF, tied to exactly the revision they produced.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FilenameWhat it is
123456-EL-SPC-2623_A+N1 (IFI)Native source files for Rev A (e.g., CAD or Word ZIP)
123456-EL-SPC-2623_B+N1 (IFI)Native source files for Rev B
123456-EL-SPC-2623_0+N1 (IFI)Native source files for Rev 0
123456-EL-SPC-2623_1+N1 (IFI)Native source files for Rev 1
123456-EL-SPC-2623_2+N1 (IFI)Native source files for as-built record
-
- -

+ Internal quality checks

-

Quality check records are kept in the archive, attached to the revision they checked, without cluttering the main sequence.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FilenameWhat it is
123456-EL-SPC-2623_A+Q1 (RSA)Quality check of Rev A draft — approved
123456-EL-SPC-2623_B+Q1 (RSA)Quality check of Rev B draft — approved
123456-EL-SPC-2623_0+Q1 (RSA)Quality check of Rev 0 — approved
123456-EL-SPC-2623_1+Q1 (RSA)Quality check of Rev 1 — approved
123456-EL-SPC-2623_2+Q1 (RSA)Quality check of as-built — approved
-
- -

+ Client or reviewer comments

-

Comments come back from reviewers anyway — as marked-up PDFs, emails, spreadsheets. The +C modifier gives each set of comments a place in the archive alongside the revision it applies to. The number suffix (+C1, +C2…) simply distinguishes between multiple sets of comments on the same revision.

-
- - - - - - - - - - - - - - - - - -
FilenameWhat it is
123456-EL-SPC-2623_A+C1 (RSB)Reviewer comments on Rev A — incorporate and resubmit
123456-EL-SPC-2623_B+C1 (RSA)Reviewer comments on Rev B — approved, no further review
-
-
-
- - -
-

7. Status codes

-

Status codes indicate the approval or review state of a deliverable. They appear in parentheses in the filename.

- -

Primary status codes (closed set)

-

Primary status codes are used on formally issued deliverables. The status field in a draft filename shows the intended status when issued.

- -

Rule: No DFT status. Draft status is not encoded as a status field. It is indicated by the ~ prefix on the revision, and must also be physically marked in the file itself (e.g., a DRAFT watermark or stamp).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CodeMeaningAction required
IFAIssued For ApprovalFormal sign-off required before proceeding
IFBIssued For BidPrice to this — binding scope
IFCIssued For ConstructionBuild to this — approved
IFDIssued For DesignRely-upon inputs for downstream design. Confirmed items may be used to proceed. Items marked as holds are issued for awareness only and must not be relied upon until the hold is lifted.
IFIIssued For InformationNo action required — for awareness only
IFPIssued For PurchaseProcurement may proceed to this version
IFRIssued For ReviewPlease review and return comments
IFUIssued For UseApproved for operational use
RECIssued For RecordFinal as-built or archived version
---No statusWorking version — status not yet assigned
- -

Review status codes (closed set)

-

Review status codes are used as the status on +C (client or reviewer comments) and +Q (internal quality check) files. They record the outcome of the review — what the reviewer concluded and what action is required on the base document.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CodeMeaningConsequence
RSAReview Status ANo comments — approved as submitted
RSBReview Status BIncorporate comments, resubmit for record
RSCReview Status CIncorporate comments, resubmit before proceeding
RSDReview Status DRejected — resubmit per stated requirements
RSINo Review RequiredSupplemental information only
- -

Typical review cycles

- - - - - - - - - - - - - - - - - - - - -
Cycle typeSequenceNotes
TypicalIFRRSAReviewer approved without comments
ExtendedIFRRSCIFARSBComments require resubmission, then approval, then final record
-
- - -
-

8. Folder naming

-

Transmittal folders follow the same convention as filenames — date-prefixed so folders sort chronologically:

- -
-folder = date "_" trackingNumber " (" status ") - " title -date = 4DIGIT "-" 2DIGIT "-" 2DIGIT -
-

Format: YYYY-MM-DD_trackingNumber (status) - title

- -
-2025-10-31_123456-EM-SUB-0001 (IFR) - General Arrangement for Review -2025-10-31_123456-EL-TRN-0043 (IFC) - Electrical Design Issued For Construction
- -

Two tracking numbers in play

-

Two tracking numbers are always in play:

-
    -
  • Deliverable tracking number — embedded in each filename; permanent; unchanged across all packages it ever travels in
  • -
  • Submittal package tracking number — in the folder name; reused by the response (same number, different date/status/optionally different title); a resubmittal gets a NEW tracking number
  • -
- -

Submittal, response, and resubmittal rules

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ActionSubmittal tracking numberRevision dateStatus
Initial submittalNew tracking numberIssue dateIssued For Review
ResponseReuses original tracking numberResponse dateReview outcome (RSA, RSC, RSB, or RSD)
ResubmittalNew tracking numberResubmittal dateTypically Issued For Approval
- -
- -2025-10-31_123456-ST-SUB-0026 (IFR) - Structural Steelwork for Review -2025-11-14_123456-ST-SUB-0026 (RSC) - Structural Steelwork for Review - - -2025-12-01_123456-ST-SUB-0031 (IFA) - Column Base Plate Detail — Resubmittal -2025-12-09_123456-ST-SUB-0031 (RSB) - Column Base Plate Detail — Resubmittal
-

The status on a package folder is the lowest review outcome across all deliverables inside it. It summarises the package; it does not override the outcome of any individual deliverable.

- -

Tracking individual deliverables

-

Search the deliverable's own tracking number across all transmittal folders in issued/ and received/. Every folder containing that number is part of its history: which package first carried it, what the response was, which resubmittal carried the revision, and what the final outcome was.

-
- - -
-

9. Transmittal workflow

-

Each third party (client, contractor, vendor, etc.) has a separate subfolder. All communication with that party lives in one place.

- -
-project/ - {party-name}/ - incoming/ ← transmittals received from party, awaiting acceptance - received/ ← permanent record of accepted transmittals from party - issued/ ← your copies of transmittals sent to party -
-

5-step workflow:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
StepActorActionVerification
1SenderCreates transmittal folder and uploads to receiver's incoming/Filenames match ZDDC convention
2ReceiverValidates filenames, completeness, and SHA-256 checksumsAll checksums match
3ReceiverMoves folder from incoming/ to received/Permanent record established
4ReceiverSaves acknowledgment with SHA-256 hashes"Official" version recorded
5ReceiverNotifies sender and distribution listHashes included in notification
- -
-

What SHA-256 gives you: Mathematical fingerprint of file contents. Single byte change → hash changes. When acknowledgment records hashes, you can verify years later that the file is identical to what was transmitted.

-
-
- - -
-

10. Tools

-

Four single-file HTML applications — each is complete and self-contained. Save them locally and they work forever, without internet, without updates, without a subscription.

- -
- -
Archive Browser
-
Browse, search, filter your project folder. Filter by tracking number, discipline, revision, status, or free text. Group by transmittal. Download selected files as ZIP.
- -
- - -
Transmittal Creator
-
Fill in metadata, drag in files, publish a self-contained HTML transmittal record with SHA-256 checksums. Supports digital signatures. The published file IS the transmittal record.
- -
- - -
Document Classifier
-
Spreadsheet-like interface for bulk-renaming files to ZDDC format. Copy/paste with Excel. Point it at a folder, fill in the columns, save all at once.
- -
- - -
Markdown Editor
-
Browser-based markdown editor with live preview, YAML front matter support, and table of contents. Direct local file access via File System Access API.
- -
-
- -

Local directory access relies on the Chromium-based browser File System Access API. It does not work in Firefox or Safari.

-
-
-
- - - - - - - \ No newline at end of file diff --git a/website/releases/archive_alpha.html b/website/releases/archive_alpha.html deleted file mode 120000 index 0c008dd..0000000 --- a/website/releases/archive_alpha.html +++ /dev/null @@ -1 +0,0 @@ -archive_v0.0.8.html \ No newline at end of file diff --git a/website/releases/archive_beta.html b/website/releases/archive_beta.html deleted file mode 120000 index 0c008dd..0000000 --- a/website/releases/archive_beta.html +++ /dev/null @@ -1 +0,0 @@ -archive_v0.0.8.html \ No newline at end of file diff --git a/website/releases/archive_stable.html b/website/releases/archive_stable.html deleted file mode 120000 index 0c008dd..0000000 --- a/website/releases/archive_stable.html +++ /dev/null @@ -1 +0,0 @@ -archive_v0.0.8.html \ No newline at end of file diff --git a/website/releases/archive_v0.0.1.html b/website/releases/archive_v0.0.1.html deleted file mode 100644 index 753b624..0000000 --- a/website/releases/archive_v0.0.1.html +++ /dev/null @@ -1,7800 +0,0 @@ - - - - - - ZDDC Archive - - - -
- - - - -
-
-
- ZDDC Archive - v0.0.1 -
- - -
-
- - -
-
- - -
- - - - -
- -
- - - - - - - -
- - -
- -
- -
- - - -
-
- - -
- - - - - - - - - - - -
-
- Tracking Number - -
- -
-
-
- Title - -
- -
-
-
- - Revisions -
- -
-
-
- - -
- 0 files - 0 selected - -
-
-
- - - - - -
-
-

Welcome to ZDDC Archive

-

Click Add Local Directory to select an archive folder to browse.

-

This browser provides a convenient interface for searching and retrieving files from ZDDC-compliant archives.

-

How to navigate:

-
    -
  • Select a party to see their transmittal folders; toggle folder types (Issued, Received, MDL, Incoming) above the list
  • -
  • Select transmittal folders to see their files
  • -
  • Use Ctrl+Click to select multiple folders
  • -
  • Use Shift+Click to select a range
  • -
  • Ctrl+Click chevrons to recursively expand/collapse
  • -
- -
- ⚠️ Windows Path Length Deficiency -
-

Microsoft Windows has a legacy 260-character path limit that affects most applications. If you see "files skipped" warnings, use Microsoft's own workaround:

-
    -
  1. Open Command Prompt as Administrator
  2. -
  3. Map your archive to a short drive letter:
    - subst Z: "C:\Your\Long\Path\To\Archive" -
  4. -
  5. Use the Z: drive in Archive Browser
  6. -
  7. To remove later: subst Z: /d
  8. -
-

This limitation dates back to Windows 95. The mapping persists until reboot.

-
-
- -

Note: This application works entirely in your browser and does not transmit any data.

-
-
- - - - - -
- - - - diff --git a/website/releases/archive_v0.0.2.html b/website/releases/archive_v0.0.2.html deleted file mode 100644 index 05b3e7b..0000000 --- a/website/releases/archive_v0.0.2.html +++ /dev/null @@ -1,7833 +0,0 @@ - - - - - - ZDDC Archive - - - - -
- - - - -
-
-
- ZDDC Archive - v0.0.2 -
- - -
-
- - -
-
- - -
- - - - -
- -
- - - - - - - -
- - -
- -
- -
- - - -
-
- - -
- - - - - - - - - - - -
-
- Tracking Number - -
- -
-
-
- Title - -
- -
-
-
- - Revisions -
- -
-
-
- - -
- 0 files - 0 selected - -
-
-
- - - - - -
-
-

Welcome to ZDDC Archive

-

Click Add Local Directory to select an archive folder to browse.

-

This browser provides a convenient interface for searching and retrieving files from ZDDC-compliant archives.

-

How to navigate:

-
    -
  • Select a party to see their transmittal folders; toggle folder types (Issued, Received, MDL, Incoming) above the list
  • -
  • Select transmittal folders to see their files
  • -
  • Use Ctrl+Click to select multiple folders
  • -
  • Use Shift+Click to select a range
  • -
  • Ctrl+Click chevrons to recursively expand/collapse
  • -
- -
- ⚠️ Windows Path Length Deficiency -
-

Microsoft Windows has a legacy 260-character path limit that affects most applications. If you see "files skipped" warnings, use Microsoft's own workaround:

-
    -
  1. Open Command Prompt as Administrator
  2. -
  3. Map your archive to a short drive letter:
    - subst Z: "C:\Your\Long\Path\To\Archive" -
  4. -
  5. Use the Z: drive in Archive Browser
  6. -
  7. To remove later: subst Z: /d
  8. -
-

This limitation dates back to Windows 95. The mapping persists until reboot.

-
-
- -

Note: This application works entirely in your browser and does not transmit any data.

-
-
- - - - - -
- - - - diff --git a/website/releases/archive_v0.0.8.html b/website/releases/archive_v0.0.8.html deleted file mode 100644 index 43b0b5a..0000000 --- a/website/releases/archive_v0.0.8.html +++ /dev/null @@ -1,8511 +0,0 @@ - - - - - - ZDDC Archive - - - - -
- - - - -
-
- -
- ZDDC Archive - v0.0.8 -
- - -
-
- - -
-
- - -
- - - - -
- -
- - - - - - - -
- - -
- -
- -
- - - -
-
- - -
- - - - - - - - - - - -
-
- Tracking Number - -
- -
-
-
- Title - -
- -
-
-
- - Revisions -
- -
-
-
- - -
- 0 files - 0 selected - -
-
-
- - - - - -
-
-

Welcome to ZDDC Archive

-

Click Add Local Directory to select an archive folder to browse.

-

This browser provides a convenient interface for searching and retrieving files from ZDDC-compliant archives.

-

How to navigate:

-
    -
  • Select a party to see their transmittal folders; toggle folder types (Issued, Received, MDL, Incoming) above the list
  • -
  • Select transmittal folders to see their files
  • -
  • Use Ctrl+Click to select multiple folders
  • -
  • Use Shift+Click to select a range
  • -
  • Ctrl+Click chevrons to recursively expand/collapse
  • -
- -
- ⚠️ Windows Path Length Deficiency -
-

Microsoft Windows has a legacy 260-character path limit that affects most applications. If you see "files skipped" warnings, use Microsoft's own workaround:

-
    -
  1. Open Command Prompt as Administrator
  2. -
  3. Map your archive to a short drive letter:
    - subst Z: "C:\Your\Long\Path\To\Archive" -
  4. -
  5. Use the Z: drive in Archive Browser
  6. -
  7. To remove later: subst Z: /d
  8. -
-

This limitation dates back to Windows 95. The mapping persists until reboot.

-
-
- -

Note: This application works entirely in your browser and does not transmit any data.

-
-
- - - - - -
- - - - diff --git a/website/releases/archive_v0.0.html b/website/releases/archive_v0.0.html deleted file mode 120000 index 0c008dd..0000000 --- a/website/releases/archive_v0.0.html +++ /dev/null @@ -1 +0,0 @@ -archive_v0.0.8.html \ No newline at end of file diff --git a/website/releases/archive_v0.html b/website/releases/archive_v0.html deleted file mode 120000 index 0c008dd..0000000 --- a/website/releases/archive_v0.html +++ /dev/null @@ -1 +0,0 @@ -archive_v0.0.8.html \ No newline at end of file diff --git a/website/releases/classifier_alpha.html b/website/releases/classifier_alpha.html deleted file mode 120000 index 4b4d3c5..0000000 --- a/website/releases/classifier_alpha.html +++ /dev/null @@ -1 +0,0 @@ -classifier_v0.0.8.html \ No newline at end of file diff --git a/website/releases/classifier_beta.html b/website/releases/classifier_beta.html deleted file mode 120000 index 4b4d3c5..0000000 --- a/website/releases/classifier_beta.html +++ /dev/null @@ -1 +0,0 @@ -classifier_v0.0.8.html \ No newline at end of file diff --git a/website/releases/classifier_stable.html b/website/releases/classifier_stable.html deleted file mode 120000 index 4b4d3c5..0000000 --- a/website/releases/classifier_stable.html +++ /dev/null @@ -1 +0,0 @@ -classifier_v0.0.8.html \ No newline at end of file diff --git a/website/releases/classifier_v0.0.1.html b/website/releases/classifier_v0.0.1.html deleted file mode 100644 index b02ed36..0000000 --- a/website/releases/classifier_v0.0.1.html +++ /dev/null @@ -1,6971 +0,0 @@ - - - - - - ZDDC Classifier - - - -
- -
- -
-
-
- ZDDC Classifier - v0.0.1 -
- - -
-
- - -
-
- - -
- - - - -
-
-
-

Files

-
- 0 files - 0 modified - -
-
-
- - - | - - - | - -
-
-
- - - - - - - - - - - - - - - - - -
#Original Filename - - Ext - - New Filename - - Tracking - - Rev - - Status - - Title - -
-
-
- -
- - -
-
-

ZDDC Classifier

-

Rename a folder of files to ZDDC format using a spreadsheet interface.

-

Open a directory, fill in tracking number, revision, status, and title for each file, then save — the files are renamed on disk.

- - - - -
    -
  • Files already named to ZDDC format are parsed automatically
  • -
  • Edit cells directly, or copy columns to and from Excel
  • -
  • Real-time validation highlights non-compliant names
  • -
  • Rename one file or all modified files at once
  • -
- -

Click Select Directory to begin.

- -

This application works entirely in your browser. No data is transmitted to any server.

-
-
-
- - - -
- - - - diff --git a/website/releases/classifier_v0.0.2.html b/website/releases/classifier_v0.0.2.html deleted file mode 100644 index 54d7c50..0000000 --- a/website/releases/classifier_v0.0.2.html +++ /dev/null @@ -1,6972 +0,0 @@ - - - - - - ZDDC Classifier - - - - -
- -
- -
-
-
- ZDDC Classifier - v0.0.2 -
- - -
-
- - -
-
- - -
- - - - -
-
-
-

Files

-
- 0 files - 0 modified - -
-
-
- - - | - - - | - -
-
-
- - - - - - - - - - - - - - - - - -
#Original Filename - - Ext - - New Filename - - Tracking - - Rev - - Status - - Title - -
-
-
- -
- - -
-
-

ZDDC Classifier

-

Rename a folder of files to ZDDC format using a spreadsheet interface.

-

Open a directory, fill in tracking number, revision, status, and title for each file, then save — the files are renamed on disk.

- - - - -
    -
  • Files already named to ZDDC format are parsed automatically
  • -
  • Edit cells directly, or copy columns to and from Excel
  • -
  • Real-time validation highlights non-compliant names
  • -
  • Rename one file or all modified files at once
  • -
- -

Click Select Directory to begin.

- -

This application works entirely in your browser. No data is transmitted to any server.

-
-
-
- - - -
- - - - diff --git a/website/releases/classifier_v0.0.8.html b/website/releases/classifier_v0.0.8.html deleted file mode 100644 index 410b25d..0000000 --- a/website/releases/classifier_v0.0.8.html +++ /dev/null @@ -1,7562 +0,0 @@ - - - - - - ZDDC Classifier - - - - -
- -
- -
-
- -
- ZDDC Classifier - v0.0.8 -
- - -
-
- - -
-
- - -
- - - - -
-
-
-

Files

-
- 0 files - 0 modified - -
-
-
- - - | - - - | - -
-
-
- - - - - - - - - - - - - - - - - -
#Original Filename - - Ext - - New Filename - - Tracking - - Rev - - Status - - Title - -
-
-
- -
- - -
-
-

ZDDC Classifier

-

Rename a folder of files to ZDDC format using a spreadsheet interface.

-

Open a directory, fill in tracking number, revision, status, and title for each file, then save — the files are renamed on disk.

- - - - -
    -
  • Files already named to ZDDC format are parsed automatically
  • -
  • Edit cells directly, or copy columns to and from Excel
  • -
  • Real-time validation highlights non-compliant names
  • -
  • Rename one file or all modified files at once
  • -
- -

Click Select Directory to begin.

- -

This application works entirely in your browser. No data is transmitted to any server.

-
-
-
- - - -
- - - - diff --git a/website/releases/classifier_v0.0.html b/website/releases/classifier_v0.0.html deleted file mode 120000 index 4b4d3c5..0000000 --- a/website/releases/classifier_v0.0.html +++ /dev/null @@ -1 +0,0 @@ -classifier_v0.0.8.html \ No newline at end of file diff --git a/website/releases/classifier_v0.html b/website/releases/classifier_v0.html deleted file mode 120000 index 4b4d3c5..0000000 --- a/website/releases/classifier_v0.html +++ /dev/null @@ -1 +0,0 @@ -classifier_v0.0.8.html \ No newline at end of file diff --git a/website/releases/index.html b/website/releases/index.html deleted file mode 100644 index 4e41245..0000000 --- a/website/releases/index.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - Download ZDDC - - - - - - - - - - -
-
-

Download ZDDC

-

Pick how you want to use it. Pick the version you want. Every link below points at a real, immutable file you can save into your archive — your tools, your version, forever.

-
-
- -
-
- - - Changes every download link below. -
- - -
-

Path A — Self-host the server

-

One small Go binary. All five tools are baked in via //go:embed; the server picks the right one for each folder of your archive. Adds ACL via .zddc files, the virtual .archive document index, and SSO header passthrough. Stop the server and the directory is still a perfectly valid ZDDC archive — the server is convenience, not lock-in.

- - - Download for Linux (x86_64) - - zddc-server_stable_linux-amd64 - -

- After download: chmod +x the file, set ZDDC_ROOT=/path/to/archive, run. - Need a different platform? Build from source at the matching tag. -

-
- - -
-

Path B — Standalone tools

-

Every tool is a single self-contained HTML file. Open it locally and point it at a folder on your disk — no install, no server, no account. Same on-disk layout the server uses. Use one tool, use all five, mix and match — there is no orchestration to set up.

- -
- - -
-

Your version, forever

-

Your server may run v0.0.8 next month and v0.1.0 the month after. Your project doesn't have to follow. If you depend on a specific behavior in archive v0.0.5, save that version into your archive — the next server upgrade can't take it away from you. Two ways to do it:

-
-
-

Drop a copy into your archive

-

Save the tool's HTML at the path the server would serve it from. The server's resolution order picks up real files first — before any cascade or embedded fallback.

-
curl -o MyProject/archive.html \
-  https://zddc.varasys.io/releases/archive_v0.0.8.html
-

Now MyProject/archive.html is yours. The server serves your bytes; nothing about a future --release can change them.

-
-
-

Pin via .zddc

-

Less invasive — no copies in your archive, just a small config entry telling the server which version to fetch and cache. Closer-to-leaf wins, so subprojects can pin further.

-
# MyProject/.zddc
-apps:
-  archive: v0.0.8
-

Server fetches once on first hit, caches under _app/, falls through to the embedded copy if the fetch fails.

-
-
-

Your archive's tools are yours. The server is convenience; deletion of the server doesn't break your archive — every per-version download above is a real, immutable static file. Save what you trust.

-
- - -
-

Channels

-

Three channels, applied in lockstep across all tools. Pre-release channels exist to soak changes; stable is what production runs.

-
-
-

alpha

-

Active dev iteration. Rebuilds without notice. Look here for the very latest.

-
-
-

beta

-

Ready for general testing. Has soaked through alpha. Still mutable — pin to a versioned URL for reproducibility.

-
-
-

stable

-

Ready to ship. Every per-version file is immutable; _stable follows the latest cut. Channel cuts cascade: stable cut resets beta and alpha to track stable.

-
-
-
-
- - - - - - diff --git a/website/releases/landing_alpha.html b/website/releases/landing_alpha.html deleted file mode 120000 index 8cc69cd..0000000 --- a/website/releases/landing_alpha.html +++ /dev/null @@ -1 +0,0 @@ -landing_v0.0.8.html \ No newline at end of file diff --git a/website/releases/landing_beta.html b/website/releases/landing_beta.html deleted file mode 120000 index 8cc69cd..0000000 --- a/website/releases/landing_beta.html +++ /dev/null @@ -1 +0,0 @@ -landing_v0.0.8.html \ No newline at end of file diff --git a/website/releases/landing_stable.html b/website/releases/landing_stable.html deleted file mode 120000 index 8cc69cd..0000000 --- a/website/releases/landing_stable.html +++ /dev/null @@ -1 +0,0 @@ -landing_v0.0.8.html \ No newline at end of file diff --git a/website/releases/landing_v0.0.1.html b/website/releases/landing_v0.0.1.html deleted file mode 100644 index e7c0831..0000000 --- a/website/releases/landing_v0.0.1.html +++ /dev/null @@ -1,1029 +0,0 @@ - - - - - - ZDDC Archive — Projects - - - -
-
- ZDDC Archive - v0.0.1 -
-
- -
-
- -
- - - -
-
-

Select Projects

-
- -
- - -
- - -
-
- -
- -
- - -
-
- - - - diff --git a/website/releases/landing_v0.0.2.html b/website/releases/landing_v0.0.2.html deleted file mode 100644 index 0d44c75..0000000 --- a/website/releases/landing_v0.0.2.html +++ /dev/null @@ -1,2199 +0,0 @@ - - - - - - ZDDC Archive — Projects - - - - -
-
- ZDDC Archive - v0.0.2 -
-
- -
-
- -
- -
-

Welcome to the ZDDC Archive

-

- Pick the projects you want to view, then open the archive. Filter by - project number or title, and save your selection as a preset to - share or come back to later. -

-
- - - - - -
-
-
-

Projects

- -
-
- -
- -
Loading projects…
-
- - -
-
- - - - diff --git a/website/releases/landing_v0.0.8.html b/website/releases/landing_v0.0.8.html deleted file mode 100644 index 035ac0e..0000000 --- a/website/releases/landing_v0.0.8.html +++ /dev/null @@ -1,2231 +0,0 @@ - - - - - - ZDDC Archive — Projects - - - - -
-
- - ZDDC Archive - v0.0.8 -
-
- -
-
- -
- -
-

Welcome to the ZDDC Archive

-

- Click a group or project below to open the archive. Use - + New group to bundle a set of projects you open together. -

-
- - - - - -
-
-
-

Groups

- -
-
- -
-
-
- -
-
- - -
- - - -
-
-

Projects

- -
-
- -
- -
Loading projects…
-
-
-
- - - - diff --git a/website/releases/landing_v0.0.html b/website/releases/landing_v0.0.html deleted file mode 120000 index 8cc69cd..0000000 --- a/website/releases/landing_v0.0.html +++ /dev/null @@ -1 +0,0 @@ -landing_v0.0.8.html \ No newline at end of file diff --git a/website/releases/landing_v0.html b/website/releases/landing_v0.html deleted file mode 120000 index 8cc69cd..0000000 --- a/website/releases/landing_v0.html +++ /dev/null @@ -1 +0,0 @@ -landing_v0.0.8.html \ No newline at end of file diff --git a/website/releases/mdedit_alpha.html b/website/releases/mdedit_alpha.html deleted file mode 120000 index c9ee4f8..0000000 --- a/website/releases/mdedit_alpha.html +++ /dev/null @@ -1 +0,0 @@ -mdedit_v0.0.8.html \ No newline at end of file diff --git a/website/releases/mdedit_beta.html b/website/releases/mdedit_beta.html deleted file mode 120000 index c9ee4f8..0000000 --- a/website/releases/mdedit_beta.html +++ /dev/null @@ -1 +0,0 @@ -mdedit_v0.0.8.html \ No newline at end of file diff --git a/website/releases/mdedit_stable.html b/website/releases/mdedit_stable.html deleted file mode 120000 index c9ee4f8..0000000 --- a/website/releases/mdedit_stable.html +++ /dev/null @@ -1 +0,0 @@ -mdedit_v0.0.8.html \ No newline at end of file diff --git a/website/releases/mdedit_v0.0.1.html b/website/releases/mdedit_v0.0.1.html deleted file mode 100644 index 274ae67..0000000 --- a/website/releases/mdedit_v0.0.1.html +++ /dev/null @@ -1,5064 +0,0 @@ - - - - - - ZDDC Markdown - - - - - - -
-
-
-
- ZDDC Markdown - v0.0.1 -
- -
-
- - -
-
- -
-
- - -
- -
-
-

Welcome to ZDDC Markdown

-

All files are edited on your local computer.

-

Click Scratchpad to start editing,
or Select Directory to work with files.

- -
- - -
-
-
- -
-
- - 0 folders - 0 files - 0 unsaved -
- -
- - - - - - -
- - - - diff --git a/website/releases/mdedit_v0.0.2.html b/website/releases/mdedit_v0.0.2.html deleted file mode 100644 index ca8e264..0000000 --- a/website/releases/mdedit_v0.0.2.html +++ /dev/null @@ -1,5416 +0,0 @@ - - - - - - ZDDC Markdown - - - - - - - -
-
-
-
- ZDDC Markdown - v0.0.2 -
- -
-
- - -
-
- -
-
- - -
- -
- - - -
-
-
- -
-
- - 0 folders - 0 files - 0 unsaved -
- -
- - - - - - -
- - - - diff --git a/website/releases/mdedit_v0.0.8.html b/website/releases/mdedit_v0.0.8.html deleted file mode 100644 index fad6384..0000000 --- a/website/releases/mdedit_v0.0.8.html +++ /dev/null @@ -1,6090 +0,0 @@ - - - - - - ZDDC Markdown - - - - - - - -
-
-
- -
- ZDDC Markdown - v0.0.8 -
- -
-
- - -
-
- -
-
- - -
- -
- - - -
-
-
- -
-
- - 0 folders - 0 files - 0 unsaved -
- -
- - - - - - -
- - - - diff --git a/website/releases/mdedit_v0.0.html b/website/releases/mdedit_v0.0.html deleted file mode 120000 index c9ee4f8..0000000 --- a/website/releases/mdedit_v0.0.html +++ /dev/null @@ -1 +0,0 @@ -mdedit_v0.0.8.html \ No newline at end of file diff --git a/website/releases/mdedit_v0.html b/website/releases/mdedit_v0.html deleted file mode 120000 index c9ee4f8..0000000 --- a/website/releases/mdedit_v0.html +++ /dev/null @@ -1 +0,0 @@ -mdedit_v0.0.8.html \ No newline at end of file diff --git a/website/releases/transmittal_alpha.html b/website/releases/transmittal_alpha.html deleted file mode 120000 index 4fdc4d5..0000000 --- a/website/releases/transmittal_alpha.html +++ /dev/null @@ -1 +0,0 @@ -transmittal_v0.0.8.html \ No newline at end of file diff --git a/website/releases/transmittal_beta.html b/website/releases/transmittal_beta.html deleted file mode 120000 index 4fdc4d5..0000000 --- a/website/releases/transmittal_beta.html +++ /dev/null @@ -1 +0,0 @@ -transmittal_v0.0.8.html \ No newline at end of file diff --git a/website/releases/transmittal_stable.html b/website/releases/transmittal_stable.html deleted file mode 120000 index 4fdc4d5..0000000 --- a/website/releases/transmittal_stable.html +++ /dev/null @@ -1 +0,0 @@ -transmittal_v0.0.8.html \ No newline at end of file diff --git a/website/releases/transmittal_v0.0.1.html b/website/releases/transmittal_v0.0.1.html deleted file mode 100644 index 93f91a6..0000000 --- a/website/releases/transmittal_v0.0.1.html +++ /dev/null @@ -1,10998 +0,0 @@ - - - - - - - - - ZDDC Transmittal - - - -
- - JavaScript not available -
- ZDDC Transmittal - v0.0.1 -
-
-
- - -
-
-
-
- - - - -
- - -
-

- Integrity - Not Validated (requires JavaScript) -

-
-
-
- -
-
- - -
-
Drop folder to scan / verify Drop HTML or JSON to import
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
# - - - - - - - - - - - - - -
-
-
- -
- -
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/releases/transmittal_v0.0.2.html b/website/releases/transmittal_v0.0.2.html deleted file mode 100644 index c52de1d..0000000 --- a/website/releases/transmittal_v0.0.2.html +++ /dev/null @@ -1,10999 +0,0 @@ - - - - - - - - - ZDDC Transmittal - - - - -
- - JavaScript not available -
- ZDDC Transmittal - v0.0.2 -
-
-
- - -
-
-
-
- - - - -
- - -
-

- Integrity - Not Validated (requires JavaScript) -

-
-
-
- -
-
- - -
-
Drop folder to scan / verify Drop HTML or JSON to import
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
# - - - - - - - - - - - - - -
-
-
- -
- -
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/releases/transmittal_v0.0.8.html b/website/releases/transmittal_v0.0.8.html deleted file mode 100644 index f3c41cb..0000000 --- a/website/releases/transmittal_v0.0.8.html +++ /dev/null @@ -1,11626 +0,0 @@ - - - - - - - - - ZDDC Transmittal - - - - -
- - JavaScript not available - -
- ZDDC Transmittal - v0.0.8 -
-
-
- - -
-
-
-
- - - - -
- - -
-

- Integrity - Not Validated (requires JavaScript) -

-
-
-
- -
-
- - -
-
Drop folder to scan / verify Drop HTML or JSON to import
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
# - - - - - - - - - - - - - -
-
-
- -
- -
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/releases/transmittal_v0.0.html b/website/releases/transmittal_v0.0.html deleted file mode 120000 index 4fdc4d5..0000000 --- a/website/releases/transmittal_v0.0.html +++ /dev/null @@ -1 +0,0 @@ -transmittal_v0.0.8.html \ No newline at end of file diff --git a/website/releases/transmittal_v0.html b/website/releases/transmittal_v0.html deleted file mode 120000 index 4fdc4d5..0000000 --- a/website/releases/transmittal_v0.html +++ /dev/null @@ -1 +0,0 @@ -transmittal_v0.0.8.html \ No newline at end of file diff --git a/website/releases/zddc-server_alpha.html b/website/releases/zddc-server_alpha.html deleted file mode 100644 index 991b0af..0000000 --- a/website/releases/zddc-server_alpha.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - zddc-server alpha channel — ZDDC - - - - -
- -

zddc-server — alpha channel

-

Cross-compiled binaries. Download for your platform, mark executable, and run with ZDDC_ROOT=/path/to/archive ./zddc-server.

- - - - - - - - -
PlatformDownload
Linux (x86_64)zddc-server_alpha_linux-amd64
macOS (Intel)zddc-server_alpha_darwin-amd64
macOS (Apple Silicon)zddc-server_alpha_darwin-arm64
Windows (x86_64)zddc-server_alpha_windows-amd64.exe
-

Need a different platform? Build from source: (cd zddc && go build -o zddc-server ./cmd/zddc-server) from the repo at the matching tag.

-
- - diff --git a/website/releases/zddc-server_alpha_darwin-amd64 b/website/releases/zddc-server_alpha_darwin-amd64 deleted file mode 120000 index 14b8e57..0000000 --- a/website/releases/zddc-server_alpha_darwin-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_alpha_darwin-arm64 b/website/releases/zddc-server_alpha_darwin-arm64 deleted file mode 120000 index a1b1225..0000000 --- a/website/releases/zddc-server_alpha_darwin-arm64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-arm64 \ No newline at end of file diff --git a/website/releases/zddc-server_alpha_linux-amd64 b/website/releases/zddc-server_alpha_linux-amd64 deleted file mode 120000 index d633da6..0000000 --- a/website/releases/zddc-server_alpha_linux-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_linux-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_alpha_windows-amd64.exe b/website/releases/zddc-server_alpha_windows-amd64.exe deleted file mode 120000 index 7364019..0000000 --- a/website/releases/zddc-server_alpha_windows-amd64.exe +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_windows-amd64.exe \ No newline at end of file diff --git a/website/releases/zddc-server_beta.html b/website/releases/zddc-server_beta.html deleted file mode 100644 index 4338385..0000000 --- a/website/releases/zddc-server_beta.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - zddc-server beta channel — ZDDC - - - - -
- -

zddc-server — beta channel

-

Cross-compiled binaries. Download for your platform, mark executable, and run with ZDDC_ROOT=/path/to/archive ./zddc-server.

- - - - - - - - -
PlatformDownload
Linux (x86_64)zddc-server_beta_linux-amd64
macOS (Intel)zddc-server_beta_darwin-amd64
macOS (Apple Silicon)zddc-server_beta_darwin-arm64
Windows (x86_64)zddc-server_beta_windows-amd64.exe
-

Need a different platform? Build from source: (cd zddc && go build -o zddc-server ./cmd/zddc-server) from the repo at the matching tag.

-
- - diff --git a/website/releases/zddc-server_beta_darwin-amd64 b/website/releases/zddc-server_beta_darwin-amd64 deleted file mode 120000 index 14b8e57..0000000 --- a/website/releases/zddc-server_beta_darwin-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_beta_darwin-arm64 b/website/releases/zddc-server_beta_darwin-arm64 deleted file mode 120000 index a1b1225..0000000 --- a/website/releases/zddc-server_beta_darwin-arm64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-arm64 \ No newline at end of file diff --git a/website/releases/zddc-server_beta_linux-amd64 b/website/releases/zddc-server_beta_linux-amd64 deleted file mode 120000 index d633da6..0000000 --- a/website/releases/zddc-server_beta_linux-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_linux-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_beta_windows-amd64.exe b/website/releases/zddc-server_beta_windows-amd64.exe deleted file mode 120000 index 7364019..0000000 --- a/website/releases/zddc-server_beta_windows-amd64.exe +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_windows-amd64.exe \ No newline at end of file diff --git a/website/releases/zddc-server_stable.html b/website/releases/zddc-server_stable.html deleted file mode 100644 index dea20c6..0000000 --- a/website/releases/zddc-server_stable.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - zddc-server stable channel — ZDDC - - - - -
- -

zddc-server — stable channel

-

Cross-compiled binaries. Download for your platform, mark executable, and run with ZDDC_ROOT=/path/to/archive ./zddc-server.

- - - - - - - - -
PlatformDownload
Linux (x86_64)zddc-server_stable_linux-amd64
macOS (Intel)zddc-server_stable_darwin-amd64
macOS (Apple Silicon)zddc-server_stable_darwin-arm64
Windows (x86_64)zddc-server_stable_windows-amd64.exe
-

Need a different platform? Build from source: (cd zddc && go build -o zddc-server ./cmd/zddc-server) from the repo at the matching tag.

-
- - diff --git a/website/releases/zddc-server_stable_darwin-amd64 b/website/releases/zddc-server_stable_darwin-amd64 deleted file mode 120000 index 14b8e57..0000000 --- a/website/releases/zddc-server_stable_darwin-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_stable_darwin-arm64 b/website/releases/zddc-server_stable_darwin-arm64 deleted file mode 120000 index a1b1225..0000000 --- a/website/releases/zddc-server_stable_darwin-arm64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-arm64 \ No newline at end of file diff --git a/website/releases/zddc-server_stable_linux-amd64 b/website/releases/zddc-server_stable_linux-amd64 deleted file mode 120000 index d633da6..0000000 --- a/website/releases/zddc-server_stable_linux-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_linux-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_stable_windows-amd64.exe b/website/releases/zddc-server_stable_windows-amd64.exe deleted file mode 120000 index 7364019..0000000 --- a/website/releases/zddc-server_stable_windows-amd64.exe +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_windows-amd64.exe \ No newline at end of file diff --git a/website/releases/zddc-server_v0.0.8.html b/website/releases/zddc-server_v0.0.8.html deleted file mode 100644 index 4dfdd80..0000000 --- a/website/releases/zddc-server_v0.0.8.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - zddc-server v0.0.8 — ZDDC - - - - -
- -

zddc-server — v0.0.8

-

Cross-compiled binaries. Download for your platform, mark executable, and run with ZDDC_ROOT=/path/to/archive ./zddc-server.

- - - - - - - - -
PlatformDownload
Linux (x86_64)zddc-server_v0.0.8_linux-amd64
macOS (Intel)zddc-server_v0.0.8_darwin-amd64
macOS (Apple Silicon)zddc-server_v0.0.8_darwin-arm64
Windows (x86_64)zddc-server_v0.0.8_windows-amd64.exe
-

Need a different platform? Build from source: (cd zddc && go build -o zddc-server ./cmd/zddc-server) from the repo at the matching tag.

-
- - diff --git a/website/releases/zddc-server_v0.0.8_darwin-amd64 b/website/releases/zddc-server_v0.0.8_darwin-amd64 deleted file mode 100755 index 2ba1a10..0000000 Binary files a/website/releases/zddc-server_v0.0.8_darwin-amd64 and /dev/null differ diff --git a/website/releases/zddc-server_v0.0.8_darwin-arm64 b/website/releases/zddc-server_v0.0.8_darwin-arm64 deleted file mode 100755 index 3044d00..0000000 Binary files a/website/releases/zddc-server_v0.0.8_darwin-arm64 and /dev/null differ diff --git a/website/releases/zddc-server_v0.0.8_linux-amd64 b/website/releases/zddc-server_v0.0.8_linux-amd64 deleted file mode 100755 index 4a42da1..0000000 Binary files a/website/releases/zddc-server_v0.0.8_linux-amd64 and /dev/null differ diff --git a/website/releases/zddc-server_v0.0.8_windows-amd64.exe b/website/releases/zddc-server_v0.0.8_windows-amd64.exe deleted file mode 100755 index d214381..0000000 Binary files a/website/releases/zddc-server_v0.0.8_windows-amd64.exe and /dev/null differ diff --git a/website/releases/zddc-server_v0.0.html b/website/releases/zddc-server_v0.0.html deleted file mode 100644 index 35ebb84..0000000 --- a/website/releases/zddc-server_v0.0.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - zddc-server v0.0 — ZDDC - - - - -
- -

zddc-server — v0.0

-

Cross-compiled binaries. Download for your platform, mark executable, and run with ZDDC_ROOT=/path/to/archive ./zddc-server.

- - - - - - - - -
PlatformDownload
Linux (x86_64)zddc-server_v0.0_linux-amd64
macOS (Intel)zddc-server_v0.0_darwin-amd64
macOS (Apple Silicon)zddc-server_v0.0_darwin-arm64
Windows (x86_64)zddc-server_v0.0_windows-amd64.exe
-

Need a different platform? Build from source: (cd zddc && go build -o zddc-server ./cmd/zddc-server) from the repo at the matching tag.

-
- - diff --git a/website/releases/zddc-server_v0.0_darwin-amd64 b/website/releases/zddc-server_v0.0_darwin-amd64 deleted file mode 120000 index 14b8e57..0000000 --- a/website/releases/zddc-server_v0.0_darwin-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_v0.0_darwin-arm64 b/website/releases/zddc-server_v0.0_darwin-arm64 deleted file mode 120000 index a1b1225..0000000 --- a/website/releases/zddc-server_v0.0_darwin-arm64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-arm64 \ No newline at end of file diff --git a/website/releases/zddc-server_v0.0_linux-amd64 b/website/releases/zddc-server_v0.0_linux-amd64 deleted file mode 120000 index d633da6..0000000 --- a/website/releases/zddc-server_v0.0_linux-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_linux-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_v0.0_windows-amd64.exe b/website/releases/zddc-server_v0.0_windows-amd64.exe deleted file mode 120000 index 7364019..0000000 --- a/website/releases/zddc-server_v0.0_windows-amd64.exe +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_windows-amd64.exe \ No newline at end of file diff --git a/website/releases/zddc-server_v0.html b/website/releases/zddc-server_v0.html deleted file mode 100644 index f0561b4..0000000 --- a/website/releases/zddc-server_v0.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - zddc-server v0 — ZDDC - - - - -
- -

zddc-server — v0

-

Cross-compiled binaries. Download for your platform, mark executable, and run with ZDDC_ROOT=/path/to/archive ./zddc-server.

- - - - - - - - -
PlatformDownload
Linux (x86_64)zddc-server_v0_linux-amd64
macOS (Intel)zddc-server_v0_darwin-amd64
macOS (Apple Silicon)zddc-server_v0_darwin-arm64
Windows (x86_64)zddc-server_v0_windows-amd64.exe
-

Need a different platform? Build from source: (cd zddc && go build -o zddc-server ./cmd/zddc-server) from the repo at the matching tag.

-
- - diff --git a/website/releases/zddc-server_v0_darwin-amd64 b/website/releases/zddc-server_v0_darwin-amd64 deleted file mode 120000 index 14b8e57..0000000 --- a/website/releases/zddc-server_v0_darwin-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_v0_darwin-arm64 b/website/releases/zddc-server_v0_darwin-arm64 deleted file mode 120000 index a1b1225..0000000 --- a/website/releases/zddc-server_v0_darwin-arm64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_darwin-arm64 \ No newline at end of file diff --git a/website/releases/zddc-server_v0_linux-amd64 b/website/releases/zddc-server_v0_linux-amd64 deleted file mode 120000 index d633da6..0000000 --- a/website/releases/zddc-server_v0_linux-amd64 +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_linux-amd64 \ No newline at end of file diff --git a/website/releases/zddc-server_v0_windows-amd64.exe b/website/releases/zddc-server_v0_windows-amd64.exe deleted file mode 120000 index 7364019..0000000 --- a/website/releases/zddc-server_v0_windows-amd64.exe +++ /dev/null @@ -1 +0,0 @@ -zddc-server_v0.0.8_windows-amd64.exe \ No newline at end of file diff --git a/zddc/internal/apps/embedded/archive.html b/zddc/internal/apps/embedded/archive.html index c05419d..3b543b2 100644 --- a/zddc/internal/apps/embedded/archive.html +++ b/zddc/internal/apps/embedded/archive.html @@ -2113,7 +2113,7 @@ td[data-field="trackingNumber"] {
ZDDC Archive - v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty + v0.0.9-alpha · 2026-05-02 12:47:59 · d688e20-dirty
diff --git a/zddc/internal/apps/embedded/classifier.html b/zddc/internal/apps/embedded/classifier.html index dbbcacf..00e89d7 100644 --- a/zddc/internal/apps/embedded/classifier.html +++ b/zddc/internal/apps/embedded/classifier.html @@ -1376,7 +1376,7 @@ body.help-open .app-header {
ZDDC Classifier - v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty + v0.0.9-alpha · 2026-05-02 12:47:59 · d688e20-dirty
diff --git a/zddc/internal/apps/embedded/index.html b/zddc/internal/apps/embedded/index.html index d40a570..6253257 100644 --- a/zddc/internal/apps/embedded/index.html +++ b/zddc/internal/apps/embedded/index.html @@ -866,7 +866,7 @@ body { ZDDC Archive - v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty + v0.0.9-alpha · 2026-05-02 12:47:59 · d688e20-dirty
diff --git a/zddc/internal/apps/embedded/mdedit.html b/zddc/internal/apps/embedded/mdedit.html index 7e18b00..7a87a31 100644 --- a/zddc/internal/apps/embedded/mdedit.html +++ b/zddc/internal/apps/embedded/mdedit.html @@ -1774,7 +1774,7 @@ body.help-open .app-header {
ZDDC Markdown - v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty + v0.0.9-alpha · 2026-05-02 12:47:59 · d688e20-dirty
diff --git a/zddc/internal/apps/embedded/transmittal.html b/zddc/internal/apps/embedded/transmittal.html index 5c87421..ee85c07 100644 --- a/zddc/internal/apps/embedded/transmittal.html +++ b/zddc/internal/apps/embedded/transmittal.html @@ -2210,7 +2210,7 @@ dialog.modal--narrow {
ZDDC Transmittal - v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty + v0.0.9-alpha · 2026-05-02 12:47:58 · d688e20-dirty
diff --git a/zddc/internal/apps/embedded/versions.txt b/zddc/internal/apps/embedded/versions.txt index 5a2a5c2..3a4eeb9 100644 --- a/zddc/internal/apps/embedded/versions.txt +++ b/zddc/internal/apps/embedded/versions.txt @@ -1,6 +1,6 @@ # Generated by build.sh — do not edit. One = per line. -archive=v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty -transmittal=v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty -classifier=v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty -mdedit=v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty -landing=v0.0.9-alpha · 2026-05-02 02:15:56 · 8c2e65e-dirty +archive=v0.0.9-alpha · 2026-05-02 12:47:59 · d688e20-dirty +transmittal=v0.0.9-alpha · 2026-05-02 12:47:58 · d688e20-dirty +classifier=v0.0.9-alpha · 2026-05-02 12:47:59 · d688e20-dirty +mdedit=v0.0.9-alpha · 2026-05-02 12:47:59 · d688e20-dirty +landing=v0.0.9-alpha · 2026-05-02 12:47:59 · d688e20-dirty