Release v0.1.4 with terrain rescanning and owner-published map updates
All checks were successful
Deploy MineGeo to Dokploy / deploy (push) Successful in 6m26s

This commit is contained in:
2026-10-28 19:40:53 +05:00
parent 5898ef35a5
commit 658c8974ac
53 changed files with 608 additions and 83 deletions

View File

@@ -22,7 +22,7 @@ export function ContributionInstructions({
<code>{serverAddress}</code>
<p>
{t(
"Capture on this server. Uploads from a different address are blocked.",
"Capture using any listed address. Uploads from other addresses are blocked.",
)}
</p>
</div>

View File

@@ -17,6 +17,7 @@ import { ExportMap } from "./MapTransfer";
type Draft = {
imported_from_id: string | null;
imported_owner_name: string | null;
ownsPublishedParent: boolean;
id: string;
name: string;
description: string;
@@ -87,7 +88,7 @@ export function DraftEditor({
clearTimeout(timer);
};
}, [id, version]);
async function save(submit = false) {
async function save(submit = false, publishOwnContribution = false) {
setBusy(true);
setError("");
setMessage("");
@@ -99,12 +100,25 @@ export function DraftEditor({
);
dirty.current = false;
if (submit) {
await api("datasets/" + id + "/submit", {});
const publishUpdate =
draft?.state === "published" && !draft.parent_dataset_id;
await api(
"datasets/" +
id +
(publishOwnContribution
? "/publish-own-contribution"
: publishUpdate
? "/publish-update"
: "/submit"),
{},
);
setVersion((v) => v + 1);
setMessage(
draft?.parent_dataset_id
? "Submitted for map owner approval."
: "Submitted for moderator review.",
publishUpdate || publishOwnContribution
? "Map update published."
: draft?.parent_dataset_id
? "Submitted for map owner approval."
: "Submitted for moderator review.",
);
} else setMessage("Draft saved.");
} catch (e) {
@@ -384,8 +398,19 @@ export function DraftEditor({
>
{draft.parent_dataset_id
? t("Submit to map owner →")
: t("Submit for review →")}
: draft.state === "published"
? t("Publish update →")
: t("Submit for review →")}
</button>
{draft.parent_dataset_id && draft.ownsPublishedParent && (
<button
className="button primary"
disabled={busy || refreshing || selected.length < minimum}
onClick={() => save(true, true)}
>
{t("Update my map now →")}
</button>
)}
</div>
)}
{!draft.imported_from_id && !draft.parent_dataset_id && (

View File

@@ -140,11 +140,11 @@ export function OwnerContributions({
)}
</p>
<label className="field">
{t("Contribution server address")}
{t("Contribution server addresses (separate with commas)")}
<input
value={address}
placeholder="play.example.com:25565"
maxLength={255}
maxLength={2559}
onChange={(e) => {
setAddress(e.target.value);
setSaved("");
@@ -153,7 +153,7 @@ export function OwnerContributions({
</label>
<p className="muted">
{t(
"Use the Minecraft hostname or IP players connect to. This address is shown publicly when player contributions are enabled. The mod records the connected server; plugin admins set server-address before exporting. You can override the captured address here, or clear it to allow unchecked submissions.",
"Enter up to 10 Minecraft hostnames or IPs separated by commas. These addresses are public when contributions are enabled. Clear them to turn off the server check.",
)}
</p>
<div className="inline-actions">