Release 0.1.0: MIT license, changelog, multi-arch Docker image without CLI builds

- LICENSE (MIT), CHANGELOG for 0.1.0, README overhaul
- docker-compose.release.yml pulling the registry image
- Dockerfile cross-compiles the server with cargo-zigbuild for amd64 and arm64;
  the terminal client is no longer built into the image
- Server, install script and settings point to a source install of the
  terminal client when no prebuilt binaries are available (/info: cli_builds)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-09 07:50:57 +01:00
1 parent d14c609576
commit ed9942829a
15 files changed
+384 -109

No files matched your search

+12 -5
View File
@@ -1,11 +1,16 @@
import { useT } from "../../i18n";
import { toast } from "../../dialogs";
import { Icon } from "../Icon";
import { useFetch } from "../../hooks";
import type { Info } from "../../types";
/** How to install and use the terminal client. */
export function CliInstall() {
const t = useT();
const cmd = `curl -fsSL ${location.origin}/cli/install.sh | sh`;
const prebuilt = useFetch<Info>("/info").data?.cli_builds ?? false;
const cmd = prebuilt
? `curl -fsSL ${location.origin}/cli/install.sh | sh`
: "cargo install --locked --git https://git.familie-zink.org/zink/codecraft codecraft-cli";
const copy = (s: string) => navigator.clipboard.writeText(s).then(() => toast(t("tokens.copied"), "success"));
return (
<div className="panel">
@@ -17,7 +22,7 @@ export function CliInstall() {
</div>
<ol className="cli-steps">
<li>
{t("cli.step1")}
{t(prebuilt ? "cli.step1" : "cli.step1Source")}
<div className="row" style={{ gap: 6, marginTop: 4 }}>
<code className="token-value">{cmd}</code>
<button className="small" onClick={() => copy(cmd)}>
@@ -36,9 +41,11 @@ export function CliInstall() {
</li>
<li>{t("cli.step3")}</li>
</ol>
<div className="hint">
{t("cli.downloads")} <a href="/cli/download/linux-x86_64">Linux x86_64</a> · <a href="/cli/download/linux-aarch64">Linux arm64</a>
</div>
{prebuilt && (
<div className="hint">
{t("cli.downloads")} <a href="/cli/download/linux-x86_64">Linux x86_64</a> · <a href="/cli/download/linux-aarch64">Linux arm64</a>
</div>
)}
</div>
);
}