Merge branch 'rel-4.1'

This commit is contained in:
Stewart Allen 2025-02-15 22:23:15 -05:00
commit d8d36b3448
76 changed files with 6431 additions and 1842 deletions

View file

@ -66,7 +66,7 @@
.pop-lcol svg {
font-size: 20px !important;
}
#mod-x {
.mod-x {
position: absolute;
font-size: 30px;
top: 8px;
@ -107,7 +107,7 @@ button {
cursor: pointer;
text-transform: capitalize;
}
button:hover {
button:not([disabled]):hover {
background-color: var(--main-color);
color: white;
}
@ -118,6 +118,9 @@ button[load] {
button[del] {
margin-left: 5px;
}
button[disabled] {
color: #999;
}
input {
background-color: #f8f8ff;
margin-bottom: 1px;
@ -183,6 +186,37 @@ th, tr, td, span, div, label, button {
}
th, tr, td, label {
white-space: nowrap;
display: flex;
}
details summary {
list-style: none;
}
details summary::-webkit-details-marker {
display: none;
}
details summary::before {
content: "";
}
details summary {
position: relative;
cursor: pointer;
}
details summary::after {
content: "▸";
position: absolute;
right: 5px;
font-size: 1em;
transform: rotate(-90deg);
transition: transform 0.2s ease;
}
details[open] summary::after {
transform: rotate(90deg);
}
/* for bambu mgr dialog */
.video {
border: 1px solid #888;
border-radius: 3px;
}
/* container for entire page / app */
@ -201,6 +235,9 @@ th, tr, td, label {
}
/** dark conversion */
.dark button[disabled] {
color: #888;
}
.dark input[disabled] {
border-color: #666;
background-color: #444;
@ -223,8 +260,12 @@ th, tr, td, label {
}
.dark button {
color: #fff;
background-color: #777;
border: 1px solid #999;
background-color: #555;
border: 1px solid #777;
}
.dark button:not([disabled]):hover {
background-color: var(--blue-2);
color: black;
}
.dark #progress {
background-color: #333;
@ -295,10 +336,15 @@ th, tr, td, label {
/* color: #fff; */
background-color: var(--blue-1);
}
.dark #modal {
.dark #dialog {
background-color: rgba(60,60,60,0.85);
border-top: 8px solid rgba(100,100,100,1);
border-bottom: 7px solid rgba(100,100,100,1);
}
.dark #modal, .dark #dialog {
color: #fff !important;
}
.dark #modal select {
.dark #modal select, .dark #dialog select {
color: #fff !important;
}
.dark .t-body,
@ -585,6 +631,15 @@ th, tr, td, label {
.bt2 {
border: 2px solid transparent;
}
.bred {
border-color: red !important;
}
.checker {
background:
linear-gradient(135deg, transparent 45%, #555 45%, #555 55%, transparent 55%) !important;
background-size: 10px 10px;
background-position: 0 0, 5px 5px;
}
.contents {
display: contents;
}
@ -594,6 +649,15 @@ th, tr, td, label {
.noshow {
display: none;
}
.mono {
font-family: monospace;
}
.font-smol {
font-size: smaller;
}
.font-tiny {
font-size: x-small;
}
.gap1 {
gap: 1px;
}
@ -612,21 +676,39 @@ th, tr, td, label {
.gap10 {
gap: 10px;
}
.pad3 {
padding: 3px !important;
}
.pad4 {
padding: 4px !important;
}
.pad5 {
padding: 5px !important;
}
.h100 {
height: 100%;
}
.grid {
display: grid;
}
.frow {
.frow, .f-row {
flex-direction: row;
}
.f-col {
.fcol, .f-col {
flex-direction: column;
}
.f-grow > * {
flex: 1;
}
.auto {
flex-basis: auto;
}
.basis-50 {
flex-basis: 50%;
}
.grow0 {
flex-grow: 0 !important;
}
.grow {
flex-grow: 1;
}
@ -654,15 +736,24 @@ th, tr, td, label {
.j-end {
justify-content: flex-end;
}
.j-stretch {
justify-items: stretch;
}
.as-stretch {
align-self: stretch;
}
.space-around {
justify-content: space-around;
}
.space-between {
justify-content: space-between;
}
.center {
.center, .t-center {
text-align: center;
}
.t-left {
text-align: left;
}
.t-just {
text-align: justify;
}
@ -697,6 +788,7 @@ th, tr, td, label {
right: 0;
bottom: 0;
position: fixed;
color: black;
background-color: #fff;
font-family: 'Russo One', sans-serif;
z-index: 1000;
@ -865,15 +957,21 @@ th, tr, td, label {
.slideshow #panel-left .settings {
transform: translateX(-100%);
transition: transform 0.15s ease-in-out;
transition: transform 0.1s ease-in-out;
transition-delay: 0.3s;
}
.slideshow #panel-left:hover .settings {
transform: translateX(0);
transition-delay: 0.0s;
}
.slideshow #panel-left:hover #slide-show {
left: -100%;
transform: translateX(-100%);
transition-delay: 0.0s;
}
.slideshow #slide-show {
transition-delay: 0.5s;
transform: translateX(-80%);
/* transform: translateX(0); */
position: absolute;
top: 5px;
left: 0;
@ -907,6 +1005,9 @@ th, tr, td, label {
#panel-right * {
direction: ltr;
} */
#panel-left {
padding-right: 5px;
}
#panel-left, #panel-right {
max-height: 100%;
background-color: var(--work-area);
@ -914,7 +1015,7 @@ th, tr, td, label {
#panel-left, #panel-right, #modal {
pointer-events: visible;
}
#panel-left label, #panel-left svg {
#panel-left label, #panel-left svg, button svg {
pointer-events: none;
}
#ws-widgets button {
@ -1443,6 +1544,23 @@ th, tr, td, label {
justify-content: center;
}
#dialog {
position: fixed;
outline: none;
color: black;
top: 100px;
left: 50%;
transform: translateX(-50%);
background-color: rgba(255,255,255,0.85);
border: 0;
border-top: 8px solid rgba(180,180,180,1);
border-bottom: 7px solid rgba(180,180,180,1);
border-radius: 5px;
overflow: hidden;
margin: 0;
padding: 5px;
}
#modal {
display: none;
position: fixed;
@ -1485,11 +1603,11 @@ th, tr, td, label {
#tool-cols {
max-height: 350px;
}
.dark #mod-x {
.dark .mod-x {
border-color: #555;
background-color: rgba(0,0,0,0.15);
}
#mod-x {
.mod-x {
border-radius: 5px;
border: 2px solid rgba(255,255,255,0.5);
background-color: rgba(255,255,255,0.5);
@ -1498,7 +1616,7 @@ th, tr, td, label {
bottom: -20px;
right: 0;
}
#mod-x svg {
.mod-x svg {
aspect-ratio: 1 / 1 !important;
}
#mod-setup {
@ -1543,6 +1661,9 @@ th, tr, td, label {
align-items: center;
justify-content: flex-start;
}
.dark #mod-help a:hover {
color: #333;
}
#mod-help a:hover {
background-color: #eee;
}
@ -1580,7 +1701,7 @@ th, tr, td, label {
background-color: rgba(255,255,255,0.5);
border: 1px solid #bbb;
border-radius: 3px;
padding: 20px 10px 10px 10px;
padding: 12px 10px 10px 10px;
}
.mod-print .box select {
min-width: 10em;
@ -1642,10 +1763,13 @@ th, tr, td, label {
display: none;
}
#code-preview-textarea {
width: 40em;
height: 12em;
font-size: smaller;
min-width: 50em;
width: 100%;
height: 7em;
font-size: x-small;
font-family: Courier,monospace;
white-space: nowrap;
resize: none;
}
.mod-end {
height: 10px;
@ -1855,6 +1979,13 @@ th, tr, td, label {
.t-33 {
width: 33%;
}
.flex {
display: flex;
}
.fat5 {
display: inline-block;
min-width: 5px !important;
}
.t-group {
background-image: var(--gradbar);
white-space: nowrap;
@ -1866,7 +1997,7 @@ th, tr, td, label {
color: white;
}
.t-body {
background-color: rgba(255,255,255,0.5);
background-color: rgba(255,255,255,1);
border: 1px solid #bbb;
border-radius: 3px;
}
@ -2136,10 +2267,10 @@ th, tr, td, label {
.settings .set-header a {
font-size: smaller;
}
#dev-sel {
margin-bottom: 0;
#dev-sel, .dev-sel {
margin-bottom: 0 !important;
}
#dev-list {
#dev-list, .dev-list {
align-self: stretch;
padding: 0 5px 0 5px;
}
@ -2245,6 +2376,7 @@ th, tr, td, label {
.var-row {
white-space: nowrap;
align-items: center;
gap: 4px;
}
.var-row label {
padding: 2px 4px 2px 0;

View file

@ -14,7 +14,7 @@
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta http-equiv="origin-trial" content="Ahn06WzHCdvTPdfl/C5eFBmA8rzzgUqWvppp+iV8SDp0jvr5DLgf8XMeAajujwLCs/6LgRoEImoJncgvG9ox8AsAAAB0eyJvcmlnaW4iOiJodHRwczovL2dyaWQuc3BhY2U6NDQzIiwiZmVhdHVyZSI6IlVucmVzdHJpY3RlZFNoYXJlZEFycmF5QnVmZmVyIiwiZXhwaXJ5IjoxNzM5OTIzMTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">
<meta http-equiv="origin-trial" content="Aixo1di7jfA+ystPFy70vGYyODYVAju1y8EQWwdkdtl5sB7i990oDCnqLQntpfl7NsW74wz99Og7xgQqeLKiBQsAAAB0eyJvcmlnaW4iOiJodHRwczovL2dyaWQuc3BhY2U6NDQzIiwiZmVhdHVyZSI6IlVucmVzdHJpY3RlZFNoYXJlZEFycmF5QnVmZmVyIiwiZXhwaXJ5IjoxNzUzMTQyNDAwLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
<title>Kiri:Moto</title>
<link rel="icon" href="/kiri/favicon.ico">
@ -61,12 +61,16 @@
<div class="grow"></div>
<div id="app-name" class="f-col a-center top-menu">
<span class="grow">
<span class="km-font">Kiri:Moto</span>
<span id="app-name-text" class="km-font">Kiri:Moto</span>
<div id="app-name-pop" class="top-menu-drop top-menu-center">
<div class="content">
<div id="app-help">
<label lk="help">help</label>
</div>
<hr width="100%">
<div id="app-don8">
<label lk="donate">donate</label>
</div>
<div>
<label id="app-mesh">mesh edit</label>
</div>
@ -392,8 +396,10 @@
<div><label>Profile</label><span id="mode-profile"></span></div>
</div>
<div class="set2-group f-col">
<div class="set-header"><a>objects</a></div>
<div id="ws-widgets" class="f-col"></div>
<details open>
<summary class="set-header"><a>objects</a></summary>
<div id="ws-widgets" class="f-col"></div>
</details>
</div>
<div class="set2-group f-col mode-fdm">
<div class="set-header"><a>ranges</a></div>
@ -441,7 +447,21 @@
<div id="modal-box" class="f-col">
<!-- title bar and closer -->
<div class="mod-top f-row"><div id="mod-x"><i class="fas fa-times"></i></div></div>
<div class="mod-top f-row"><div id="mod-x" class="mod-x"><i class="fas fa-times"></i></div></div>
<!-- donate menu -->
<div id="mod-don8" class="mdialog f-col">
<div class="f-col gap4" style="gap:5px">
<div class="t-pad2"></div>
<div style="padding:20px;font-size:larger;font-weight:bold">Your contribution is appreciated!</div>
<div style="padding:5px 0 5px 0;justify-content:center">And supports ongoing development,</div>
<div style="padding:5px 0 20px 0;justify-content:center">servers, forums, and related costs</div>
<button id="don8pt" class="yellow" style="justify-content:center;padding:25px;font-size:larger"><a target="_paypal" href="https://www.patreon.com/c/gridspace3d">Become a Patreon Patron</a></button>
<button id="don8gh" class="yellow" style="justify-content:center;padding:25px;font-size:larger"><a target="_github" href="https://github.com/sponsors/GridSpace">Sponsor on GitHub</a></button>
<button id="don8pp" class="yellow" style="justify-content:center;padding:25px;font-size:larger"><a target="_paypal" href="https://paypal.me/gridspace3d">Donate with PayPal</a></button>
<div class="t-pad2"></div>
</div>
</div>
<!-- help menu -->
<div id="mod-help" class="mdialog f-col">
@ -455,7 +475,7 @@
<a target="_rsc" href="https://discord.gg/suyCCgr"><i class="fab fa-discord"></i> Discord Server</a>
<a target="_rsc" href="https://github.com/gridspace/grid-apps/issues"><i class="fas fa-bug"></i> Bug Reports</a>
<a target="_rsc" href="https://github.com/gridspace/grid-apps/releases"><i class="fab fa-github"></i> Releases & Binaries</a>
<a target="_rsc" href="https://paypal.me/gridspace3d?locale.x=en_US"><i class="fab fa-paypal"></i> Support Development</a>
<a target="_rsc" onclick="kiri.api.modal.show('don8')"><i class="fa-solid fa-sack-dollar"></i> Support Development</a>
<a href="https://youtu.be/08795Sj22QE" target="youtube"><i class="fab fa-youtube"></i>Video Guide (from v2.5)</a>
</div>
<hr width="100%">
@ -581,27 +601,45 @@
<div id="mod-local" class="mdialog f-col"></div>
<!-- export dialogs -->
<div id="mod-x-any" class="mod-print mdialog f-col">
<div class="header"><label>export</label></div>
<div id="print-info" class="f-col box">
<div><label>file name</label><input id="print-filename" size="20" spellcheck="false" /></div>
<div><label>file size (bytes)</label><input id="print-filesize" size="12" disabled="true" /></div>
<div><label>time estimate (h:m:s)</label><input id="output-time" size="12" disabled="true" /></div>
<div class="f-row gap4">
<div class="f-col grow">
<div class="header"><label>job</label></div>
<div id="print-info" class="f-col box">
<div><label>file name</label><input id="print-filename" size="20" spellcheck="false" /></div>
<div><label>file size (bytes)</label><input id="print-filesize" size="12" disabled="true" /></div>
<div><label>time estimate (h:m:s)</label><input id="output-time" size="12" disabled="true" /></div>
</div>
</div>
<div id="print-filament" class="f-col">
<div class="header"><label>material</label></div>
<div class="f-col box">
<div><label>filament density (g/cm^3)</label><input id="print-density" size="12" value="1.25" /></div>
<div><label>filament used (mm)</label><input id="print-filament" size="12" disabled="true" /></div>
<div><label>printed weight (g)</label><input id="print-weight" size="12" disabled="true" /></div>
</div>
</div>
</div>
<div id="print-filament-head" class="header"><label>filament</label></div>
<div id="print-filament-info" class="f-col box">
<div><label>filament density (g/cm^3)</label><input id="print-density" size="12" value="1.25" /></div>
<div><label>filament used (mm)</label><input id="print-filament" size="12" disabled="true" /></div>
<div><label>printed weight (g)</label><input id="print-weight" size="12" disabled="true" /></div>
</div>
<div id="code-preview-head" class="header"><label>code preview</label></div>
<div id="code-preview-head" class="header"><label>gcode preview</label></div>
<div id="code-preview" class="f-col box">
<div><textarea id="code-preview-textarea"></textarea></div>
</div>
<div class="header"><label>gcode</label></div>
<div class="header"><label>download</label></div>
<div class="f-row box">
<button id="print-download" class="grow">download</button>
<button id="print-download" class="grow">gcode</button>
<button id="print-palette" class="grow">palette</button>
<button id="print-zip" class="grow">zip file</button>
<button id="print-zip" class="grow">zip</button>
<button id="print-3mf" class="grow">3mf</button>
</div>
<div id="bambu-output" class="f-col">
<div class="header"><label>send to bambu</label></div>
<div class="f-row box gap4 a-center">
<label class="grow0 pad3">printer</label>
<select id="print-bambu-device"></select>
<label class="grow0 pad3">spool</label>
<select id="print-bambu-spool"></select>
<button id="print-bambu-1" class="grow" disabled>send</button>
<button id="print-bambu-2" class="grow" disabled>send + print</button>
</div>
</div>
<div id="send-to-octohead" class="header"><label>octoprint</label></div>
<div id="send-to-octoprint" class="f-col box">
@ -643,7 +681,7 @@
<div id="mod-x-sla" class="mod-print mdialog f-col">
<div class="header"><label>export</label></div>
<div id="print-info" class="f-col box">
<div><label>file name</label><input id="print-filename" size="20" spellcheck="false" /></div>
<div><label>file name</label><input id="print-filename-sla" size="20" spellcheck="false" /></div>
<div><label>resin used ML</label><input id="print-volume" size="10" spellcheck="false" /></div>
<div><label>layers</label><input id="print-layers" size="10" spellcheck="false" /></div>
<div><label>print time</label><input id="print-time" size="10" spellcheck="false" /></div>
@ -656,7 +694,7 @@
<div id="mod-x-laser" class="mod-print mdialog f-col">
<div class="header"><label>export</label></div>
<div id="print-info" class="f-col box">
<div><label>file name</label><input id="print-filename" size="20" spellcheck="false" /></div>
<div><label>file name</label><input id="print-filename-laser" size="20" spellcheck="false" /></div>
<div><label>segments</label><input id="print-lines" size="12" disabled="true" /></div>
</div>
<div class="header"><label>download</label></div>
@ -671,6 +709,9 @@
<div class="mod-end"></div></div>
</div>
<!-- prompts and other modals needed in electron -->
<dialog id="dialog"></dialog>
<!-- click + drag mouse tracking -->
<div id="tracker"></div>

View file

@ -16,6 +16,7 @@ self.kiri.lang['en-us'] = {
edit: "edit",
enable: "enable",
disable: "disable",
donate: "donate",
export: "export",
files: "files",
filter: "filter",
@ -521,6 +522,8 @@ self.kiri.lang['en-us'] = {
// CNC OUTLINE
co_menu: "outline",
co_merg_s: "merge overlap",
co_merg_l: ["merge overlapping lines to prevent overcutting into adjacent solids"],
co_dogb_s: "dogbones",
co_dogb_l: ["insert dogbone cuts","into inside corners"],
co_dogr_s: "reverse bones",
@ -607,6 +610,8 @@ self.kiri.lang['en-us'] = {
ci_abso_l: "degree rotation is absolute",
ci_face_s: "face",
ci_face_l: "select face to rotate facing up",
ci_line_s: "linear",
ci_line_l: "make linear passes along X then rotate Y",
// CNC LASER On/Off Operations (Carvera)
cl_powr_s: "power",
@ -692,6 +697,10 @@ self.kiri.lang['en-us'] = {
ou_lays_l: ["mark layers for stacking. the layer above will be output in a different color which the laser can mark with a lower power. turns on layer grouping."],
ou_drkn_s: "drag knife",
ou_drkn_l: ["enable drag knife","output in gcode","cut radii are added","to corners with","cut down passes"],
ou_stak_s: "fixed",
ou_stak_l: ["output is a 3D stack of 2D paths rather than packing layers flat in 2D"],
ou_maxp_s: "max power",
ou_maxp_l: ["max power value in gcode. power % from settings will scale from 0 to this value"],
// OUTPUT FDM
ou_nozl_s: "nozzle temp",
@ -726,8 +735,10 @@ self.kiri.lang['en-us'] = {
ou_zanc_l: ["controls the position of the part","when stock Z exceeds part Z"],
ou_ztof_s: "z offset",
ou_ztof_l: ["offset z anchor","in workspace units"],
ou_ztop_s: "z top",
ou_ztop_l: ["offset from stock bottom","to set start of cutting depth","in workspace units","* drill/contour ignore this *"],
ou_zbot_s: "z bottom",
ou_zbot_l: ["offset from part bottom","to limit cutting depth","in workspace units"],
ou_zbot_l: ["offset from stock bottom","to limit cutting depth","in workspace units"],
ou_zclr_s: "z clearance",
ou_zclr_l: ["safe travel offset","from top of part","in workspace units"],
ou_ztru_s: "z thru",
@ -815,6 +826,8 @@ self.kiri.lang['en-us'] = {
ad_lbir_l: ["always print shells touching the belt before any other shells. this is no longer a recommended setting based on extensive testing."],
ad_altr_s: "alternating",
ad_altr_l: ["alternate shell winding order","clockwise / counter-clockwise","may reduce warping in thin areas","and help with belt edge adhesion"],
ad_zint_s: "interleave z",
ad_zint_l: ["interleave Z heights with odd number shells"],
ad_lret_s: "layer retract",
ad_lret_l: ["force filament retraction","between layers"],
ad_agap_s: "avoid gaps",

View file

@ -1,5 +1,5 @@
{
"name": "Kiri:Moto 4.0.31",
"name": "Kiri:Moto 4.1.0",
"short_name": "Kiri:Moto",
"description": "Slicer for 3D printers, CNC mills, laser cutters and more",
"start_url": "/kiri/",