Removes the codeberg.org/varasys/zddc-server registry image, which had no remaining consumer outside this shop. The two chart Dockerfiles (tnd-zddc-chart) now compile zddc-server from source at build time, fetching the right tag from a Codeberg release. release-image.sh, zddc/Containerfile, and zddc/podman-compose.yaml are gone. Build artifacts (HTML tools + zddc-server binaries) move from website/releases/ in this repo to Codeberg release assets attached to git tags. The website at zddc.varasys.io serves them by reverse- proxying /releases/<tag>/<asset> to the corresponding Codeberg URL, so consumers (zddc-use, level-2 bootstrap stubs, the chart Dockerfiles) only ever talk to zddc.varasys.io. Releases page becomes server-rendered static HTML regenerated on each build via a single Codeberg API call. A small website/releases/manifest.json maps <tool>-<channel> → tag for runtime channel resolution by zddc-use and the level-2 stubs. Files added: - shared/publish-codeberg-release.sh — POSIX-sh helper that creates a Codeberg release for a tag (sets prerelease flag from tag suffix) and uploads/replaces release assets idempotently. Sourced by build-lib.sh and zddc/release.sh. - zddc/release.sh — replaces release-image.sh. Tags + cross-compiles binaries via native Go (no podman needed; install Go) + uploads to Codeberg release assets. No image build, no registry push. Files modified: - shared/build-lib.sh — promote_release tags + uploads via the helper for stable AND alpha/beta now (alpha/beta were untagged before). update_alpha removed; per-tool build.sh files no longer mirror to website/releases/<tool>_alpha.html on plain dev builds. - build.sh — prefers native go build over the old podman-based cross-compile (which is gone with Containerfile). build_releases_index queries the Codeberg API once and writes static HTML + manifest.json, with graceful fallback when the API is unreachable. - bootstrap/level2.html.tmpl — fetches manifest.json to resolve channel → tag, then fetches the asset from /releases/<tag>/<asset> (Caddy proxy). Replaces the old /releases/<tool>_<channel>.html flat URL pattern. Operators with curl'd level-2 stubs need to re-issue them — this is a breaking change. - AGENTS.md, CLAUDE.md — rewritten to describe the new flow. - .gitignore — releases/ artifacts now expected to be on Codeberg, not committed locally. NOT in this commit (deferred until $CODEBERG_TOKEN is provisioned): - Backfilling existing tags as Codeberg releases. - Cleanup commit: git rm-ing the existing artifacts in website/releases/. Until backfill happens, those files are how operators with old bootstrap stubs still get content. Once Codeberg has the assets, drop them. - The Caddy reverse-proxy config on zddc.varasys.io. Operator-side changes (not in this repo): - tnd-zddc-chart Dockerfile.prod and Dockerfile (dev) need updating to compile from source rather than `FROM codeberg.org/...:stable`. Done in a separate commit on that repo. - Caddyfile rule for the /releases/<tag>/<asset> reverse-proxy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| css | ||
| js | ||
| vendor | ||
| build.sh | ||
| README.md | ||
| template.html | ||
ZDDC Markdown Editor
A lightweight, browser-based markdown editor with YAML front matter support.
🔗 Open Markdown Editor - Click to use online, or right-click → "Save Link As" to keep your own copy.
Reliability
This tool follows the "record player with the record" philosophy - the application and your data travel together. The single HTML file contains everything needed to edit markdown files locally in your browser.
Quick Start
- Open the editor in your browser
- Click Select Directory to choose a folder with markdown files
- Navigate the file tree on the left
- Click any
.mdfile to edit it - Click Save File or Save All to save changes
Features
📂 File Navigation
- Browse directories using the File System Access API
- Collapsible folder tree with file type icons
- Files sorted alphabetically with directories grouped
✏️ Markdown Editing
- Toast UI Editor with live preview
- Split view (markdown + preview)
- Full toolbar for formatting
📋 YAML Front Matter
- Separate front matter section at top of editor
- Auto-parsed and preserved on save
- Collapsible for more editing space
📑 Table of Contents
- Auto-generated from headings
- Adjustable depth (H1 only through H6)
- Click to jump to heading in preview
💾 File Operations
- Save individual files or Save All
- Reload from disk (discards unsaved changes)
- External change detection with reload prompt
- Unsaved change warnings before leaving
🖼️ File Previews
- Image preview for common formats
- HTML preview in sandboxed iframe
- Plain text editing for non-markdown files
Build
The editor is built from modular source files using a bash script:
cd mdedit
./build.sh
This concatenates CSS and JS files into dist/mdedit.html.
Project Structure
mdedit/
├── css/
│ ├── base.css # Core styles and layout
│ ├── editor.css # Toast UI Editor overrides
│ ├── toc.css # Table of Contents styles
│ └── markdown.css # Markdown rendering styles
├── js/
│ ├── app.js # Global state
│ ├── utils.js # Utility functions
│ ├── front-matter.js # YAML parsing
│ ├── file-system.js # File operations
│ ├── file-tree.js # Tree rendering
│ ├── editor.js # Toast UI setup
│ ├── toc.js # TOC generation
│ ├── resizer.js # Pane resizing
│ ├── events.js # Event listeners
│ └── main.js # Initialization
├── vendor/
│ ├── toastui-editor-all.min.js # Toast UI Editor JS (bundled)
│ └── toastui-editor.min.css # Toast UI Editor CSS (bundled)
├── template.html # HTML structure (uses CDN for local dev convenience)
├── build.sh # Build script (inlines vendor files, strips CDN refs)
└── dist/
└── mdedit.html # Built self-contained file
Technical Details
- No server required - runs entirely in browser
- File System Access API - direct local file access
- Toast UI Editor v3.2.2 - bundled from
vendor/into the built output (no CDN required) - Tailwind CSS - replaced at build time by
css/tailwind-utils.css, a hand-written static subset containing only the ~80 utility classes actually used intemplate.html(no runtime overhead, no console warnings) - Fully self-contained -
dist/mdedit.html(~850 KB) works offline with no external dependencies
Development note:
template.htmlloads Toast UI and Tailwind from CDN for a faster local development experience (opentemplate.htmldirectly in a browser). Thebuild.shscript replaces the Tailwind CDN<script>tag with nothing (utilities come fromcss/tailwind-utils.cssinstead) and replaces the Toast UI CDN tags with the locally bundledvendor/files when producingdist/mdedit.html.
Modules
CSS and JS modules live under css/ and js/. The canonical load order is in build.sh. See the root ARCHITECTURE.md for the build/module pattern and AGENTS.md for shared helpers.
mdedit-specific notes:
css/tailwind-utils.cssis a hand-curated static subset of Tailwind v3 — there is no Tailwind build step. Add a class here when adding it totemplate.html.- Toast UI Editor v3.2.2 ships pre-bundled in
vendor/.template.htmlloads it from CDN for dev convenience;build.shswaps the CDN tag for the bundled file. - File operations (create, rename, delete) live in
js/file-ops.js.
Build Process
The build script (build.sh):
- Concatenates all local CSS and JS files in dependency order
- Replaces the CDN
<script>/<link>tags for Tailwind and Toast UI with the locally bundled files fromvendor/ - Injects everything into
template.htmlto producedist/mdedit.html
The final HTML file (~850 KB) is fully self-contained and works offline.
Architecture Notes
- All local CSS/JS files are inlined into the output HTML
- Vendor dependencies (Toast UI, Tailwind) are bundled from
vendor/— no runtime CDN access template.htmlloads dependencies from CDN for convenient local development, butbuild.shreplaces these- No npm dependencies required at runtime
- File System Access API requires Chromium-based browsers