Skip to content

Lunima v0.12.0

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Jul 09:02
082533c

✨ New Features

  • (+) Spike: durchklickbare UI-Flow-Tests via Avalonia.Headless (Edit-Fork, Create-PDK, BoxSelect-Delete-Undo)
  • (+) Eye/BER panel: plain-language help flyout with stacking animation (#535)
  • (+) Transient panel: plain-language help flyout + adaptive time-axis unit (#600)
  • (+) Sample-mode transient driver + signal-source library (#600)
  • (+) FDTD: guided Docker setup dialog when Docker is missing or stopped (#649)
  • (+) Active time-dependent compact models for transient mode (#529)
  • feat: in-place self-update — download, swap, relaunch (#614)

🐛 Bug Fixes

  • (=) Error console: marshal appends to the UI thread — background logging (passivity warnings in transient runs) crashed with 'Call from invalid thread' (#764)
  • fix(routing): arc-true collision handling for frozen and styled waveguide routes (#761)
  • fix(routing): flat PDK components (sub-cell pin pitch) route clean under the process floor (#760)
  • fix(routing): A* honors the process bend-radius floor; controlled degradation instead of loops and crossings (#758)
  • (=) UI-flow host: restore App.Services after each test, serialize flow tests in one collection
  • Fix: editor rename within the same PDK no longer orphans the old component (#745)
  • Fix #582: FDTD recompute sweeps the component's own wavelengths, stale ones warned + provenance-tagged
  • Fix: Platzierungs-Sperre erkennt wertkompatible custom PDKs; PDK-Edit-Fenster nicht doppelt (#736)
  • Fix missing wavelength/power editor for suffixed PDK coupler names (#689)
  • (=) Salvage from #681/#680: SiEPIC Bond Pad electrical pin + bundled-PDK electrical-pin test
  • Fix intermittent "Test host process crashed" QA abort (two pre-existing root causes)
  • Fix #616 Linux data-loss: replace app files in place, guard shared dirs
  • Fix case-sensitive script path in GDS verification test
  • Fix GDS coordinate extraction test to match the script's actual JSON schema
  • fix(self-update): guard progress callback from clobbering the terminal status
  • fix(self-update): address verification findings (#614)
  • Fix macOS update: download the .dmg, not the Windows .msi (#610)

🔧 Improvements

  • (c) Bump version to 0.12.0 (#765)
  • refactor: split the A*-attempt out of WaveguideRouter (file-size hard limit) (#759)
  • chore: enable pr-feedback agent role in .agent.toml
  • (c) Design spec: sample-mode transient driver + signal-source library (#600)

📝 Other Changes

  • Feld-Runde 5: i18n-Live-Switch, Gruppen-Verbindungs-Settings, Chart-UX, Offset-Editor-Fixes + Pin-Kalibrierung (#763)
  • Feld-Runde 4: Transient-Physik-Fix (Mehr-Hop-Ausbreitung), Eyedropper-Klick, Mixed-Process-Export, PDK-Datenfixes (#762)
  • Analysis charts: plain wheel scrolls the dock, Ctrl(/Cmd)+wheel zooms (#693) (#708)
  • Eye/BER + Transient: pick the analysis output coupler on the canvas (eyedropper, OUT tag, persisted) (#757)
  • Routing respects the process minimum bend radius + clearly labeled radius columns in the process editor (#756)
  • Figma-like waveguide editing: click/hover selection, distinct smooth curve styles, in-canvas radius handles with process-minimum clamp (#755)
  • Agent: Routing UX: per-connection bend type, interconnect settings (width/radius/layer), manual per-bend radius + freeze (#631)
  • test: tag slowest 31 classes [Category=Slow] for CI-only gating (#752)
  • i18n phase 2: localize ViewModel/Service status strings (#749) (#751)
  • Multi-language UI (i18n): English · Deutsch · 中文 · Español · 日本語 — auto-detect, live switch, guard test (#750)
  • Retire per-instance Nazca overrides + component-editor preview fixes + heavy-test gating (#748)
  • PDK-/Editor-UX-Polish: kompakte Controls, Editor-Fenster-Fixes, Trash-Restore pro Element, Rechtsklick→Editor (#742)
  • docs(pr-media): visual walkthrough for #582
  • PDK-Lifecycle: Startup-Reload (#700), '+'-Anlage, Layer-Divergenz mit Warnung/Design-Check, Trash-Delete (#739)
  • PDK/Prozess-UX-Feinschliff: Save ohne Preview-Pflicht, modus-saubere PDK-Erstellung + Templates, per-PDK-Prozess-Editor (#733)
  • Create Custom PDK: eigener Dialog (adopt/define), Prozess-Sichtbarkeit by-value, nazca-Beispiel (#732)
  • New Component: Fixes + Struktur-Preview (Thumbnail/Popup) + Edit/Recompute (#729)
  • PDK-first v-next: modales 'New PDK'-Fenster + Backend-Beispielcode-Autoload (#727)
  • CornerStone coupler_straight: real cspdk S-matrix, no silent all-zero black box (#712) (#719)
  • PDK-first 'Neue Komponente'-Assistent: benannte custom PDKs, own-code + Syntax-Highlighting, Meep (#723)
  • Eigene Komponente per Rawcode: Code einfügen / aus .py laden im 'Neue Komponente'-Fenster (#721)
  • Mode-slice inspector: point-and-probe waveguide modes on the canvas + fiber overlap at couplers (#691) (#706)
  • Laser toggle: fix all review findings (#690 follow-up)
  • Agent: FDTD recompute: review findings & follow-ups (#569) (#632)
  • Docker setup: highlight the re-login hint (field-test feedback)
  • Docker setup: classify socket permission-denied separately (#649 field test)
  • Netlist view & export: gdsfactory YAML netlist (#687) (#688)
  • Self-update (Linux): make the relaunch guard actually able to fire
  • Agent: PDK consistency check: verify Lunima JSON nazcaFunction strings against installed Python packages (#625)
  • Crossing insertion defaults to OFF (new features are opt-in)
  • Settings: move crossing-insertion toggle from General onto the Routing page
  • Routing: diagonal routing becomes an opt-in setting (default: off)
  • Routing: Adaptive Crossing-Insertion mit echter PDK-Komponente (#553) (#629)
  • Keep laser icons visible/clickable in Transient mode; skip disabled lasers in sweeps
  • Routing: lateral goal tolerance as fallback retry instead of default
  • Routing: restore lateral goal tolerance + hot-path fixes (review findings)
  • Bring-your-own-Component v1: eigene gdsfactory-Komponente → eigenes PDK (FDTD-S-Matrix, prozess-gebunden) (#702)
  • Agent: TE/TM polarization domain: parallel pin/connection kind (#626)
  • Per-coupler laser on/off: laser-off couplers are outputs (#690)
  • Review fix: only grating/edge couplers are light sources, not every "Coupler"
  • Electrical connections export as metal traces (#682, part 1) (#686)
  • Electrical metal routing: traces, waveguide-crossing bridges, probe pad (#682)
  • Electrical pins: fix export/serialization/compat findings (#519 review)
  • Demo PDK: electrical pins on Phase Shifter (heater) + Photodetector (anode/cathode)
  • Harden self-updater rollback + shared-dir guard (#616 review findings)
  • Routing: 8-direction octile routing with 45° diagonals as new default (#552)
  • Enforce pin-kind compatibility in click-to-connect path and CreateConnectionCommand (#519)
  • Re-trigger review: previous reviewer output was unparseable
  • Electrical pin kind foundation: parallel signal domain alongside optical (#519)
  • macOS update: guide the unsigned-build Gatekeeper bypass (#610)
  • Harden macOS/Linux update launch: open via IUrlLauncher, don't auto-quit (#610)

📦 Installation

Windows (Recommended - MSI Installer)

  1. Download Lunima-Setup-0.12.0.msi
  2. Run the installer
  3. Desktop shortcut and Start Menu entry will be created automatically

Requirements: .NET 10 Desktop Runtime (x64) - installer will check and prompt if missing

Windows (Portable)

  1. Download Lunima-0.12.0-win-x64.zip
  2. Extract and run Lunima.exe

Linux

  1. Download Lunima-0.12.0-linux-x64.tar.gz
  2. Extract: tar xzf Lunima-*.tar.gz
  3. Run: ./Lunima

macOS (Apple Silicon & Intel)

  1. Download Lunima-0.12.0-osx-arm64.dmg (Apple Silicon) or Lunima-0.12.0-osx-x64.dmg (Intel)
  2. Open the .dmg and drag Lunima into Applications
  3. These builds are unsigned. On first launch, clear the quarantine flag:
    xattr -dr com.apple.quarantine /Applications/Lunima.app
    (or right-click the app → OpenOpen to bypass Gatekeeper once)

No .NET installation required for portable versions — everything is included.


Commit: 082533c