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

+1
View File
@@ -1,6 +1,7 @@
{
"name": "codecraft-web",
"private": true,
"license": "MIT",
"version": "0.1.0",
"type": "module",
"scripts": {
+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>
);
}
+1
View File
@@ -391,6 +391,7 @@ export const de: Messages = {
"cli.title": "Terminal-Client",
"cli.intro": "Arbeite mit CodeCraft im Terminal wie mit Claude Code: Der Agent bearbeitet Dateien und führt Befehle auf deinem Rechner aus, Modelle, Modi und Regeln kommen von diesem Server (Kosten erscheinen in deiner Statistik). Er läuft auch ohne Server mit eigenen API-Keys.",
"cli.step1": "Installieren (Linux, x86_64 und arm64):",
"cli.step1Source": "Aus dem Quellcode installieren (braucht Rust; dieser Server hat keine fertigen Binaries):",
"cli.step2": "Mit deinem CodeCraft-Konto anmelden:",
"cli.step3": "Im Projektordner mit `codecraft` starten. Darin: /help, /model, /mode, Shift+Tab wechselt den Modus, @ fügt Dateien hinzu. `codecraft update` aktualisiert.",
"cli.downloads": "Direkte Downloads:",
+1
View File
@@ -390,6 +390,7 @@ export const en = {
"cli.title": "Terminal client",
"cli.intro": "Work with CodeCraft in your terminal like with Claude Code: the agent edits files and runs commands on your machine, while models, modes and rules come from this server (costs show up in your statistics). It can also run without a server using your own API keys.",
"cli.step1": "Install (Linux, x86_64 and arm64):",
"cli.step1Source": "Install from source (needs Rust; this server has no prebuilt binaries):",
"cli.step2": "Sign in with your CodeCraft account:",
"cli.step3": "Start it in a project folder with `codecraft`. Inside: /help, /model, /mode, Shift+Tab switches the mode, @ adds files. `codecraft update` updates it.",
"cli.downloads": "Direct downloads:",
+2
View File
@@ -193,6 +193,8 @@ export interface Info {
/** Newer release (admins only). */
update?: { version: string; url: string; notes: string } | null;
setup_required: boolean;
/** Prebuilt terminal client binaries can be downloaded from this server. */
cli_builds?: boolean;
oidc: { label: string } | null;
user: User | null;
}