• v1.5.0 6eeaa3026c

    jkaindl released this 2026-06-01 21:38:35 +00:00 | 109 commits to main since this release

    Read-through reference (Nachschlagewerk) + complete gender-neutral edition.

    Added

    • Nachschlagewerk / read-through reader — browse all 64 hexagrams in King-Wen order, independent of casting: an 8×8 index grid, previous/next navigation, deep links (#h=<n>), and the full Wilhelm text per hexagram (judgment, image, meaning, trigrams, all line texts + interpretations, footnotes). Bilingual (DE/EN) and register-aware (neutral/historical) through the existing toggles.
    • Gender-neutral edition completed to full coverage — every generic, gender-implying reference to a person is now de-gendered across all dimensions (judgment/image/meaning, all 386 line texts + interpretations, notes) in both DE and EN, verified leak-free by an adversarial audit; content otherwise unchanged. Content-specific gendered figures (the marrying maiden, the Father/Mother/Son/Daughter trigram roles, kings, dragons) are preserved verbatim.

    Fixed

    • OCR scan artifacts in the public-domain Wilhelm source (e.g. a1s->als, p9egen->pflegen, gänz1ich->gänzlich).

    macOS app

    The attached Yijing.dmg is Developer ID-signed and Apple-notarized — it launches with no Gatekeeper warning. Universal (arm64 + x86_64), offline-capable; it bundles the reader and the complete bilingual data.

    Full changes: see CHANGELOG.md.

    Downloads
  • v1.4.1 4fc3e39c8b

    jkaindl released this 2026-06-01 14:43:09 +00:00 | 113 commits to main since this release

    Notarized macOS app

    The release DMG is now Developer ID-signed and Apple-notarized — it opens by double-click with no Gatekeeper warning, online or offline. The old "Open Anyway" / xattr quarantine workaround is no longer needed.

    Added

    • Developer ID signing + Apple notarization pipeline in build-macos-app.sh (opt-in via YIJING_SIGN_IDENTITY / YIJING_NOTARY_PROFILE): signs → notarizes → staples the app and the dmg, then verifies with spctl / stapler. Without the variables the build stays unsigned (unchanged).

    Changed

    • README (EN + DE), SECURITY.md, INSTALL.txt and docs/MACOS-APP.md updated for macOS 15 / 26 Gatekeeper; the workaround is demoted to an un-notarized-builds-only fallback.

    SHA-256 (Yijing.dmg): d84260e2e7ba13c56917dc060bfe966d633563a6eed751914e7da588220cf01f

    Downloads
  • v1.4.0 83ce859d93

    jkaindl released this 2026-06-01 00:19:05 +00:00 | 115 commits to main since this release

    [1.4.0] — 2026-06-01

    Added

    • Gender-neutral text variant, on by default, with a register toggle in
      the settings (DE + EN). Generic role nouns are de-gendered ("der Edle" → "die
      edle Person", with matching pronouns); content-specific imagery (the marrying
      maiden, the Father/Mother trigrams, the dragons) is preserved. The verbatim
      Wilhelm 1924 wording stays one click away ("Historisch"). Stored as
      *_neutral / *_en_neutral overrides; produced by scripts/neutralize.py
      (deterministic regex) + an LLM polish, applied by scripts/apply_neutral.py.
    • Working Markdown / PDF export in the macOS app via a native WKWebView
      bridge (WKScriptMessageHandler): Markdown through NSSavePanel, PDF through
      WKWebView.createPDF. Previously both buttons were dead — WKWebView supports
      neither window.print() nor <a download> blobs.
    • Two PDF modes (one button + a small menu): Print (B/W) and
      App design (full-bleed, mirrors the active theme).
    • Footnotes ("Anmerkungen") per hexagram, and the all-lines-moving oracle
      ("use the nine / use the six") for hexagrams 1 & 2.

    Changed

    • Wilhelm texts re-sourced from Projekt-Gutenberg as the canonical 1924
      edition (scripts/scrape_gutenberg.py → committed source asset). Texts now
      render as real paragraphs instead of one pre-wrapped string.

    Fixed

    • Empty meaning for hexagrams 17/25/47/48/53/56 and the missing hexagram 2
      image are restored; OCR glitches corrected; the changing-lines section that
      had leaked into several image fields is removed (now only in lines).
    • The reading question was silently dropped from the printed PDF.
    • History list: the question column collapsed to one word per line.
    Downloads
  • v1.3.0 bb48f02c9a

    jkaindl released this 2026-05-28 12:12:31 +00:00 | 134 commits to main since this release

    Highlights

    UI polish

    • Visible language switcher in the footer — an adaptive link that switches to the other language and is labelled in that language (German UI → “English version”, English UI → “Deutsche Version”). No more digging through the settings modal to find it.
    • Minimalist inline-SVG header icons (Lucide, ISC) replace the previous Unicode glyphs (⚙ / ◐), which rendered inconsistently across fonts and platforms. stroke=currentColor, so they inherit the theme and hover colours.
    • Two-state theme toggle (light ↔ dark). The icon shows the current state (moon = dark, sun = light); the tooltip describes the click action. “Follow system” stays the initial default but is no longer separately selectable.
    • Settings: the language section moved to the top of the modal.

    Documentation

    • README split into two languagesREADME.md is now the canonical English version, README.de.md holds the German one, each with a language-switcher line at the top.

    Fixed

    • The app bundle version (Info.plist) was stuck at 1.0 since v1.0 and never bumped across releases — it now correctly reports 1.3.0.

    macOS app: download Yijing.dmg below (universal, arm64 + x86_64, ~3.4 MB). On first launch, see the Gatekeeper note in docs/MACOS-APP.md.

    Web / PWA: https://jkaindl.codeberg.page/Yijing/

    Full notes: CHANGELOG.md

    Downloads
  • v1.2.1 d2bfc8c287

    jkaindl released this 2026-05-27 15:54:49 +00:00 | 136 commits to main since this release

    Patch-Release nach v1.2.0 — alle Audit-Resterampe + Social-Preview-Bild + Stichproben-QA-Patches der englischen Übersetzung.

    Highlights

    • Hero-Bild für Social-Preview — stilisiertes Hexagramm 1 + 易經 (1200×630, PNG aus SVG-Quelle). og:image + twitter:image absolut verlinkt, Twitter-Card auf summary_large_image. Beim Teilen der Live-Demo auf Mastodon/Bluesky/Slack erscheint jetzt ein hübscher Vorschau-Block.
    • StaticServer-Härtung — Connection-Limit (max 32 parallel) plus zentraler Cleanup. Schließt theoretischen lokalen-Prozess-Flood-Vektor.
    • serve.py-Cleanup_watch_parent() raus (war für die alte Python-Backend-Variante der macOS-App vor v1.1, seit dem unbenutzt).
    • EN-Übersetzungs-QA — 7 Patches via Stichproben-Review:
      • 41 Vorkommen superior mannoble one (君子-Vokabel-Konsistenz; drei Subagent-Batches hatten uneinheitlich übersetzt)
      • Hex 11 image_en: „regions of heaven" → „cardinal directions" (Bedeutungsverfehlung)
      • Hex 11 image_en: doppeltes „unite" / „intercourse" entzerrt
      • Hex 11 judgment_en: „hold the rule in hand" → „hold the reins of power" (Idiom)
      • Hex 49 judgment_en: „On your own day, then you are believed" → ohne „then"
      • Hex 49 line 3 text_en: „gone round three times" → „been heard three times"
      • Hex 49 line 5 interpretation_en: Germanismus „fall to him" → „give him their allegiance"

    Installation

    Disk-Image öffnen, „Yijing" in den Programme-Ordner ziehen — fertig.

    Beim ersten Start meldet macOS „Apple konnte die App nicht prüfen" (Hobbyprojekt ohne Notarisierung). Lösung: Apple-Menü → Systemeinstellungen → Datenschutz & Sicherheit → ganz nach unten scrollen → „Trotzdem öffnen". Details und Fallback siehe docs/MACOS-APP.md und INSTALL.txt im Disk-Image.


    Volle Notes: CHANGELOG.md.

    Downloads
  • v1.2.0 80d3835ebe

    jkaindl released this 2026-05-27 15:29:30 +00:00 | 137 commits to main since this release

    Zweisprachig Deutsch / English — die UI lässt sich jetzt komplett zwischen Deutsch und Englisch umschalten, und alle 64 Hexagramm-Texte gibt es auf beiden Sprachen.

    Highlights

    • i18n-Layer ohne Framework (web/i18n.js): UI-Strings, Datumsformate, Markdown-Export-Header und LLM-Default-System-Prompt folgen der Sprach-Wahl. Default = Browser-Sprache (navigator.language), umschaltbar in den Settings.
    • Englische Hexagramm-Texte (data/hexagrams.en.json): eigene Übersetzung des Wilhelm-Originals (1924, gemeinfrei) im Wilhelm-Stil — würdevoll, klassische I-Ching-Vokabeln (the superior man, the great man, the noble one, the abyss, the well, …), vergleichbar mit Cary F. Baynes' 1950er-Übersetzung, aber in eigenen Worten. Übersetzt mit Claude Opus 4.7 parallel über acht Subagenten. 64/64 Hexagramme, 384/384 Linientexte.

    Zusätzliche Verbesserungen

    • scripts/sync-pages.sh — automatisierter Sync von main nach pages-Branch.
    • scripts/test-kingwen.mjs — Sanity-Test der King-Wen-Lookup-Tabellen (JS + Python) plus EN-JSON-Strukturchecks.
    • .editorconfig für IDE-Konsistenz.
    • Open-Graph + Twitter-Card Meta-Tags für Social-Preview.
    • SECURITY.md, .gitea/issue_template/ für strukturiertes Issue-Triage.

    Installation

    Disk-Image öffnen, „Yijing" in den Programme-Ordner ziehen — fertig.

    Beim ersten Start meldet macOS „Apple konnte die App nicht prüfen" (Hobbyprojekt ohne Notarisierung). Lösung: Apple-Menü → Systemeinstellungen → Datenschutz & Sicherheit → ganz nach unten scrollen → „Trotzdem öffnen". Details und Fallback siehe docs/MACOS-APP.md und INSTALL.txt im Disk-Image.


    Volle Notes: CHANGELOG.md.

    Downloads
  • v1.1.1 7050c6d702

    jkaindl released this 2026-05-25 06:14:07 +00:00 | 148 commits to main since this release

    Patch-Release nach einem strukturierten Code-Audit. Keine neuen Features — nur Bugfixes, Sicherheits-Härtungen und Robustheits-Verbesserungen.

    Behoben

    • web/llm.js: Stream-Reader wird jetzt in einem finally-Block freigegeben. Beim schnellen „Abbrechen"-und-sofort-Wiederstarten der Interpretation konnte sonst ReadableStream is locked auftreten.
    • scripts/macos-app/StaticServer.swift: wartet beim Start explizit auf den NWListener-State .ready. Vorher konnte der WebView in seltenen Fällen gegen einen noch nicht aufgeschlagenen Port laden.
    • scripts/build_data.py: deterministische Auswahl unter gleich langen Bild-Assoziations-Prompts.

    Geändert

    • Härtungen ohne sichtbare Verhaltensänderung: HTML-Escape an allen innerHTML-Stellen, Quota-Schutz für localStorage, Focus-Management im <dialog>-Fallback, WKWebView-Scheme-Allowlist, klarerer Pfad-Traversal-Guard im Swift-Server, atomarer Schreibvorgang und bessere Fehlermeldungen in build_data.py.
    • scripts/serve.py bindet auf 127.0.0.1 statt auf allen Interfaces.
    • SPDX-Header (AGPL-3.0-or-later) auf web/app.js und web/llm.js.

    Download

    Yijing.dmg — universal binary (arm64 + x86_64), 3,0 MB. Installation: DMG öffnen, App in den Programme-Ordner ziehen. Beim ersten Start Gatekeeper-Hinweis — Anleitung im README oder INSTALL.txt im DMG.

    Downloads
  • v1.1 acc2514be4

    jkaindl released this 2026-05-24 21:05:15 +00:00 | 155 commits to main since this release

    Was sich ändert

    • Kein Python mehr nötig. Die macOS-App bekommt einen Swift-internen HTTP-Server (Network.framework / NWListener) statt eines Python-Subprozesses. Auf Macs ohne Xcode/Command-Line-Tools entfällt der lästige „Apple konnte python3 nicht prüfen → Command Line Tools installieren?"-Dialog beim ersten Start.
    • DMG kleiner. 3,0 MB statt 3,7 MB — nur noch web/, data/, sw.js im Bundle statt des gesamten Repo-Stands.
    • Web-UI: Der macOS-Download-Hinweis ist aus dem prominenten Header-Block in eine dezente Footer-Zeile gewandert.

    Installation

    DMG öffnen, Yijing.app in den Programme-Ordner ziehen, dort doppelklicken.

    Beim allerersten Start meldet macOS „App konnte nicht geprüft werden". Das ist normal (Hobbyprojekt ohne Apple-Notarisierung):

    1. „Fertig" klicken (nicht „In den Papierkorb"!)
    2. Apple-Menü → Systemeinstellungen → Datenschutz & Sicherheit
    3. Ganz nach unten scrollen → „Trotzdem öffnen" → mit Passwort/Touch ID bestätigen
    4. Letzter Dialog: nochmal „Trotzdem öffnen"

    Details und Fallback (xattr): siehe README und beiliegende INSTALL.txt.

    Upgrade von v1.0

    Yijing.app aus dem neuen DMG einfach in /Programme ziehen — überschreibt die alte Version.

    Downloads
  • v1.0 39ab9b851d

    jkaindl released this 2026-05-22 11:00:43 +00:00 | 159 commits to main since this release

    Downloads