@studiotitta/studio-editori 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,10 +6,6 @@ export interface Tiedosto {
6
6
  /** base64 kuville, utf-8 tekstille. Oletus utf-8. */
7
7
  koodaus?: "utf-8" | "base64";
8
8
  }
9
- export interface Tekija {
10
- nimi: string;
11
- sahkoposti: string;
12
- }
13
9
  export declare class RistiriitaVirhe extends Error {
14
10
  /** Repon nykyinen versio. */
15
11
  nykyinenVersio: string;
@@ -33,7 +29,6 @@ export declare function lueTiedosto(asetukset: GithubAsetukset, polku: string, v
33
29
  export interface Tallennus {
34
30
  tiedostot: Tiedosto[];
35
31
  viesti: string;
36
- tekija: Tekija;
37
32
  /**
38
33
  * Tiedostokohtaiset versiot, joista muokkaus alkoi: polku → versio.
39
34
  *
@@ -127,13 +127,30 @@ async function kirjoitaKerran(asetukset, tallennus, kohteet, tarkistaRistiriita)
127
127
  menetelma: "POST",
128
128
  runko: { base_tree: nykyinen, tree: blobit },
129
129
  });
130
+ /*
131
+ Tekijätietoa EI aseteta tarkoituksella.
132
+
133
+ Aiemmin tekijäksi merkittiin muokkaajan oma nimi ja sähköposti. Se näytti
134
+ kauniilta repon historiassa, mutta esti julkaisun: Vercel vaatii, että
135
+ commitin sähköposti vastaa jotakin GitHub-tiliä, ja asiakkaalla ei
136
+ tyypillisesti ole GitHub-tunnusta lainkaan. Julkaisu jäi tilaan "Blocked"
137
+ eikä rakennusta edes yritetty — virhe, joka ei näy build-lokeissa, koska
138
+ niitä ei synny. Tämä tuli vastaan Storyanalyticassa 4.10.2026, kun
139
+ asiakas teki ensimmäiset omat muokkauksensa.
140
+
141
+ Kun tekijä jätetään pois, GitHub merkitsee commitin sovelluksen nimiin.
142
+ Se on oikea GitHub-identiteetti, jonka Vercel hyväksyy.
143
+
144
+ Tieto muokkaajasta ei katoa: se on commit-viestin rungossa muodossa
145
+ "Muokannut <osoite> sivuston editorilla". GitHubin listanäkymä esittää
146
+ vain otsikkorivin, mutta commit itse kertoo tekijän.
147
+ */
130
148
  const commit = await github(asetukset, `/repos/${asetukset.repo}/git/commits`, {
131
149
  menetelma: "POST",
132
150
  runko: {
133
151
  message: tallennus.viesti,
134
152
  tree: puu.sha,
135
153
  parents: [nykyinen],
136
- author: { name: tallennus.tekija.nimi, email: tallennus.tekija.sahkoposti },
137
154
  },
138
155
  });
139
156
  await github(asetukset, `/repos/${asetukset.repo}/git/refs/heads/${asetukset.haara}`, {
@@ -118,7 +118,6 @@ export function kuvienReitti(yliajot) {
118
118
  },
119
119
  ],
120
120
  viesti: `Uusi kuva: ${kansio}\n\nLadannut ${muokkaaja} sivuston editorilla.`,
121
- tekija: { nimi: muokkaaja.split("@")[0] ?? muokkaaja, sahkoposti: muokkaaja },
122
121
  });
123
122
  }
124
123
  catch (virhe) {
@@ -21,11 +21,6 @@ import { kaannosAvain } from "./kaannos.js";
21
21
  import { kuvatekstiAvain } from "./kuvateksti.js";
22
22
  import { RistiriitaVirhe } from "./github/tiedostot.js";
23
23
  import { valitseVarasto } from "./varasto.js";
24
- /** Tekijän nimi commitiin. Sähköpostista ennen @-merkkiä, siistittynä. */
25
- function tekijanNimi(sahkoposti) {
26
- const alku = sahkoposti.split("@")[0] ?? sahkoposti;
27
- return alku.replace(/[._-]+/g, " ").trim() || sahkoposti;
28
- }
29
24
  function commitinViesti(sivujenNimet, muokkaaja) {
30
25
  const mita = sivujenNimet.join(", ");
31
26
  return `Sisältömuutos: ${mita}\n\nMuokannut ${muokkaaja} sivuston editorilla.`;
@@ -146,7 +141,6 @@ export function sisallonReitit(yliajot = {}) {
146
141
  const { versio } = await varasto().tallenna({
147
142
  tiedostot,
148
143
  viesti: commitinViesti(nimet, muokkaaja),
149
- tekija: { nimi: tekijanNimi(muokkaaja), sahkoposti: muokkaaja },
150
144
  ...(Object.keys(perustuu).length > 0 ? { perustuu } : {}),
151
145
  });
152
146
  /* Uudet tiedostoversiot mukaan, jotta seuraava tallennus samasta
@@ -393,7 +393,12 @@ function Kuvakentta({ maaritys, arvo, muuta, lataa, }) {
393
393
  setVirhe(syy instanceof Error ? syy.message : "Kuvan lataus ei onnistunut.");
394
394
  }
395
395
  }
396
- return (_jsxs("div", { className: "kuva", children: [esikatselu ?? (typeof kuva?.src === "string" ? kuva.src : null) ? (_jsxs(_Fragment, { children: [_jsx("img", { src: esikatselu ?? kuva?.src, alt: "" }), esikatselu ? (_jsx("p", { className: "ohje", children: "Uusi kuva. Se tulee sivulle, kun tallennat." })) : null] })) : (_jsx("p", { className: "tyhja", children: "Ei kuvaa." })), _jsxs("label", { className: "lataus", children: [_jsx("span", { children: tila === "lataa" ? "Käsitellään…" : "Vaihda kuva" }), _jsx("input", { type: "file", accept: "image/*", disabled: tila === "lataa", onChange: (tapahtuma) => valitse(tapahtuma.target.files?.[0]) })] }), tila === "virhe" ? _jsx("p", { className: "virheviesti", children: virhe }) : null, _jsxs("label", { className: "alt", children: ["Kuvan kuvaus", _jsx("input", { type: "text", placeholder: "Esimerkiksi: kynttil\u00E4 ikkunalaudalla", value: typeof kuva?.alt === "string" ? kuva.alt : "", onChange: (tapahtuma) => {
396
+ return (_jsxs("div", { className: "kuva", children: [esikatselu ?? (typeof kuva?.src === "string" ? kuva.src : null) ? (_jsxs(_Fragment, { children: [_jsx("img", { src: esikatselu ?? kuva?.src, alt: "" }), esikatselu ? (_jsx("p", { className: "ohje", children: "Uusi kuva. Se tulee sivulle, kun tallennat." })) : null] })) : (_jsx("p", { className: "tyhja", children: "Ei kuvaa." })), _jsxs("label", { className: "lataus", children: [_jsx("span", { children: tila === "lataa" ? "Käsitellään…" : "Vaihda kuva" }), _jsx("input", { type: "file", accept: "image/*", disabled: tila === "lataa", onChange: (tapahtuma) => valitse(tapahtuma.target.files?.[0]) })] }), tila === "virhe" ? _jsx("p", { className: "virheviesti", children: virhe }) : null, _jsxs("label", { className: "alt", children: ["Kuvan kuvaus", _jsx("input", { type: "text",
397
+ /* Vihje opettaa muodon, ei sisältöä. Aiempi "Esimerkiksi: kynttilä
398
+ ikkunalaudalla" luettiin ehdotukseksi siitä, mitä kenttään pitäisi
399
+ kirjoittaa, eikä esimerkiksi alt-tekstin muodosta — eikä kynttilä
400
+ liity mihinkään sivustoon, joilla editoria käytetään. */
401
+ placeholder: "Lyhyesti: mit\u00E4 kuvassa n\u00E4kyy", value: typeof kuva?.alt === "string" ? kuva.alt : "", onChange: (tapahtuma) => {
397
402
  setVaihdettu(false);
398
403
  muuta({ ...(kuva ?? {}), alt: tapahtuma.target.value });
399
404
  } })] }), ehdotus ? (_jsxs("div", { className: "huomio", role: "status", children: [_jsxs("p", { children: ["Ehdotus: \u201C", ehdotus, "\u201D"] }), _jsx("button", { type: "button", onClick: () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiotitta/studio-editori",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Studio Titan sisältöeditori asiakassivustoille: tekstit ja kuvat muokataan suoraan sivulla",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",