Skip to content

Commit 0819ff9

Browse files
authored
Prepare v0.5.0 release (#14)
1 parent d975a73 commit 0819ff9

8 files changed

Lines changed: 33 additions & 23 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,22 @@ jobs:
1616

1717
steps:
1818
- name: Checkout
19-
uses: actions/checkout@v4
19+
# actions/checkout v4
20+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
2021

2122
- name: Install Rust
22-
uses: dtolnay/rust-toolchain@stable
23+
# dtolnay/rust-toolchain stable
24+
uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30
2325
with:
2426
components: clippy, rustfmt
2527

2628
- name: Cache Rust build artifacts
27-
uses: Swatinem/rust-cache@v2
29+
# Swatinem/rust-cache v2
30+
uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae
2831

2932
- name: Install cargo-audit
30-
uses: taiki-e/install-action@v2
33+
# taiki-e/install-action v2
34+
uses: taiki-e/install-action@2ca9b94c269419b7b0c711c09d0b21c4e1d51145
3135
with:
3236
tool: cargo-audit
3337

@@ -55,13 +59,16 @@ jobs:
5559

5660
steps:
5761
- name: Checkout
58-
uses: actions/checkout@v4
62+
# actions/checkout v4
63+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
5964

6065
- name: Install Rust
61-
uses: dtolnay/rust-toolchain@stable
66+
# dtolnay/rust-toolchain stable
67+
uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30
6268

6369
- name: Cache Rust build artifacts
64-
uses: Swatinem/rust-cache@v2
70+
# Swatinem/rust-cache v2
71+
uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae
6572

6673
- name: Check Windows build
6774
run: cargo check --all-targets --all-features --locked

‎CHANGELOG.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# Changelog
22

3-
## Unreleased
3+
## 0.5.0 - 2026-07-10
44

55
- Restore conventional CLI behavior for no-argument `mdo`: print a short **Open Markdown as HTML** landing page and exit successfully, while `mdo --help` retains the full CLI reference. Rename the onboarding command from `--tour` to `--setup` and keep the whole flow, including its welcome-sample verification, available through the double-clickable `mdo-setup` companion.
6+
- Linux: add a visible, per-user **mdo Setup** application-menu launcher. It remains available when the separate **Open as HTML** file-handler integration is uninstalled, and normal setup runs repair it if necessary.
67

78
- Replace the `mdo-setup` multi-dialog onboarding with a launcher for the single-screen `mdo --setup`: Linux opens a terminal emulator (`$TERMINAL` or a known one such as `gnome-terminal`/`konsole`/`xterm`, with a `zenity`/`kdialog`/`yad` fallback notice), and Windows opens the same styled Windows Terminal (`wt`) setup as no-file `mdo-open.exe`, falling back to a new console when `wt` is unavailable. This drops the chain of `[OK]` dialogs in favor of the one-screen, single Y/N setup and avoids the dialog-dismiss and missing-backend failures of the old flow.
89
- Exit non-zero from `mdo` when a one-shot render fails (refused symlinked output, temp-dir setup failure, or conversion failure) so scripts and the docs pipeline can detect errors; `--watch` keeps running.

‎Cargo.lock‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mdo-cli"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
edition = "2021"
55
default-run = "mdo"
66
build = "build.rs"

‎README.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<meta charset="utf-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1">
6-
<meta name="generator" content="mdo 0.4.0">
6+
<meta name="generator" content="mdo 0.5.0">
77
<title>📝 mdo — Markdown to HTML5 Converter (with optional live watch)</title>
88
<style>
99
:root{--sans-font:-apple-system,BlinkMacSystemFont,"Avenir Next",Avenir,"Nimbus Sans L",Roboto,"Noto Sans","Segoe UI",Arial,Helvetica,"Helvetica Neue",sans-serif;--mono-font:Consolas,Menlo,Monaco,"Andale Mono","Ubuntu Mono",monospace;--standard-border-radius:5px;--border-width:1px;--bg:#fff;--accent-bg:#f5f7ff;--text:#212121;--text-light:#585858;--border:#898ea4;--accent:#0d47a1;--accent-hover:#1266e2;--accent-text:var(--bg);--code:#d81b60;--preformatted:#444;--marked:#fd3;--disabled:#efefef}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#212121;--accent-bg:#2b2b2b;--text:#dcdcdc;--text-light:#ababab;--accent:#ffb300;--accent-hover:#ffe099;--accent-text:var(--bg);--code:#f06292;--preformatted:#ccc;--disabled:#111}img,video{opacity:.8}}*,:before,:after{box-sizing:border-box}textarea,select,input,progress{-webkit-appearance:none;-moz-appearance:none;appearance:none}html{font-family:var(--sans-font);scroll-behavior:smooth}body{color:var(--text);background-color:var(--bg);grid-template-columns:1fr min(45rem,90%) 1fr;margin:0;font-size:1.15rem;line-height:1.5;display:grid}body>*{grid-column:2}body>header{background-color:var(--accent-bg);border-bottom:var(--border-width)solid var(--border);text-align:center;grid-column:1/-1;padding:0 .5rem 2rem}body>header>:only-child{margin-block-start:2rem}body>header h1{max-width:1200px;margin:1rem auto}body>header p{max-width:40rem;margin:1rem auto}main{padding-top:1.5rem}body>footer{color:var(--text-light);text-align:center;border-top:var(--border-width)solid var(--border);margin-top:4rem;padding:2rem 1rem 1.5rem;font-size:.9rem}h1{font-size:3rem}h2{margin-top:3rem;font-size:2.6rem}h3{margin-top:3rem;font-size:2rem}h4{font-size:1.44rem}h5{font-size:1.15rem}h6{font-size:.96rem}p{margin:1.5rem 0}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}h1,h2,h3{line-height:1.1}@media only screen and (width<=720px){h1{font-size:2.5rem}h2{font-size:2.1rem}h3{font-size:1.75rem}h4{font-size:1.25rem}}a,a:visited{color:var(--accent)}a:hover{text-decoration:none}button,.button,a.button,input[type=submit],input[type=reset],input[type=button]{border:var(--border-width)solid var(--accent);background-color:var(--accent);color:var(--accent-text);padding:.5rem .9rem;line-height:normal;text-decoration:none}.button[aria-disabled=true],input:disabled,textarea:disabled,select:disabled,button[disabled]{cursor:not-allowed;background-color:var(--disabled);border-color:var(--disabled);color:var(--text-light)}input[type=range]{padding:0}abbr[title]{cursor:help;text-decoration-line:underline;text-decoration-style:dotted}button:enabled:hover,.button:not([aria-disabled=true]):hover,input[type=submit]:enabled:hover,input[type=reset]:enabled:hover,input[type=button]:enabled:hover{background-color:var(--accent-hover);border-color:var(--accent-hover);cursor:pointer}.button:focus-visible,button:focus-visible:where(:enabled),input:enabled:focus-visible:where([type=submit],[type=reset],[type=button]){outline:2px solid var(--accent);outline-offset:1px}header nav{padding:1rem 0 0;font-size:1rem;line-height:2}header nav ul,header nav ol{flex-flow:wrap;place-content:space-around center;align-items:center;margin:0;padding:0;list-style-type:none;display:flex}header nav ul li,header nav ol li{display:inline-block}header nav a,header nav a:visited{border:var(--border-width)solid var(--border);border-radius:var(--standard-border-radius);color:var(--text);margin:0 .5rem 1rem;padding:.1rem 1rem;text-decoration:none;display:inline-block}header nav a:hover,header nav a.current,header nav a[aria-current=page],header nav a[aria-current=true]{border-color:var(--accent);color:var(--accent);cursor:pointer}@media only screen and (width<=720px){header nav a{border:none;padding:0;line-height:1;text-decoration:underline}}aside,details,pre,progress{background-color:var(--accent-bg);border:var(--border-width)solid var(--border);border-radius:var(--standard-border-radius);margin-bottom:1rem}aside{float:right;width:30%;margin-inline-start:15px;padding:0 15px;font-size:1rem}[dir=rtl] aside{float:left}@media only screen and (width<=720px){aside{float:none;width:100%;margin-inline-start:0}}article,fieldset,dialog{border:var(--border-width)solid var(--border);border-radius:var(--standard-border-radius);margin-bottom:1rem;padding:1rem}article h2:first-child,section h2:first-child,article h3:first-child,section h3:first-child{margin-top:1rem}section{border-top:var(--border-width)solid var(--border);border-bottom:var(--border-width)solid var(--border);margin:3rem 0;padding:2rem 1rem}section+section,section:first-child{border-top:0;padding-top:0}section+section{margin-top:0}section:last-child{border-bottom:0;padding-bottom:0}details{padding:.7rem 1rem}summary{cursor:pointer;word-break:break-all;margin:-.7rem -1rem;padding:.7rem 1rem;font-weight:700}details[open]>summary+*{margin-top:0}details[open]>summary{margin-bottom:.5rem}details[open]>:last-child{margin-bottom:0}table{border-collapse:collapse;margin:1.5rem 0}figure>table{width:max-content;margin:0}td,th{border:var(--border-width)solid var(--border);text-align:start;padding:.5rem}th{background-color:var(--accent-bg);font-weight:700}tr:nth-child(2n){background-color:var(--accent-bg)}table caption{margin-bottom:.5rem;font-weight:700}textarea,select,input,button,.button{font-size:inherit;border-radius:var(--standard-border-radius);box-shadow:none;max-width:100%;margin-bottom:.5rem;padding:.5em;font-family:inherit;display:inline-block}textarea,select,input{color:var(--text);background-color:var(--bg);border:var(--border-width)solid var(--border)}label{display:block}textarea:not([cols]){width:100%}select:not([multiple]){background-image:linear-gradient(45deg,transparent 49%,var(--text)51%),linear-gradient(135deg,var(--text)51%,transparent 49%);background-position:calc(100% - 15px),calc(100% - 10px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-inline-end:25px}[dir=rtl] select:not([multiple]){background-position:10px,15px}input[type=checkbox],input[type=radio]{vertical-align:middle;width:min-content;position:relative}input[type=checkbox]+label,input[type=radio]+label{display:inline-block}input[type=radio]{border-radius:100%}input[type=checkbox]:checked,input[type=radio]:checked{background-color:var(--accent)}input[type=checkbox]:checked:after{content:" ";border-right:solid var(--bg).08em;border-bottom:solid var(--bg).08em;background-color:#0000;border-radius:0;width:.2em;height:.4em;font-size:1.8em;position:absolute;top:.04em;left:.18em;transform:rotate(45deg)}input[type=radio]:checked:after{content:" ";background-color:var(--bg);border-radius:100%;width:.3em;height:.3em;font-size:1.8em;position:absolute;top:.125em;left:.125em}@media only screen and (width<=720px){textarea,select,input{width:100%}}input[type=color]{height:2.5rem;padding:.2rem}input[type=file]{border:0}hr{height:var(--border-width);background:var(--border);border:none;margin:1rem auto}mark{border-radius:var(--standard-border-radius);background-color:var(--marked);color:#000;padding:2px 5px}mark a{color:#0d47a1}img,video{border-radius:var(--standard-border-radius);max-width:100%;height:auto}figure{margin:0;display:block;overflow-x:auto}figure>img,figure>picture>img{margin-inline:auto;display:block}figcaption{text-align:center;color:var(--text-light);margin-block:1rem;font-size:.9rem;position:sticky;left:0}blockquote{border-inline-start:.35rem solid var(--accent);color:var(--text-light);margin-block:2rem;margin-inline:2rem 0;padding:.4rem .8rem;font-style:italic}cite{color:var(--text-light);font-size:.9rem;font-style:normal}dt{color:var(--text-light)}code,pre,pre span,kbd,samp{font-family:var(--mono-font);color:var(--code)}kbd{color:var(--preformatted);border:var(--border-width)solid var(--preformatted);border-bottom:3px solid var(--preformatted);border-radius:var(--standard-border-radius);padding:.1rem .4rem}pre{max-width:100%;color:var(--preformatted);padding:1rem 1.4rem;overflow:auto}pre code{color:var(--preformatted);background:0 0;margin:0;padding:0}progress{width:100%}progress:indeterminate{background-color:var(--accent-bg)}progress::-webkit-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent-bg)}progress::-webkit-progress-value{border-radius:var(--standard-border-radius);background-color:var(--accent)}progress::-moz-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent);transition-property:width;transition-duration:.3s}progress:indeterminate::-moz-progress-bar{background-color:var(--accent-bg)}dialog{background-color:var(--bg);max-width:40rem;margin:auto}dialog::backdrop{background-color:var(--bg);opacity:.8}@media only screen and (width<=720px){dialog{max-width:calc(100vw - 2rem)}}sup,sub{vertical-align:baseline;position:relative}sup{top:-.4em}sub{top:.3em}.notice{background:var(--accent-bg);border:var(--border-width)solid var(--border);border-radius:var(--standard-border-radius);margin:2rem 0;padding:1.5rem}@media print{@page{margin:1cm}body{display:block}body>header{background-color:unset}body>header nav,body>footer{display:none}article{border:none;padding:0}a[href^=http]:after{content:" <" attr(href)">"}abbr[title]:after{content:" (" attr(title)")"}a{text-decoration:none}p{widows:3;orphans:3}hr{border-top:var(--border-width)solid var(--border)}mark{border:var(--border-width)solid var(--border)}pre,table,figure,img,svg{break-inside:avoid}pre code{white-space:pre-wrap}}
@@ -419,6 +419,6 @@ <h2>📄 License</h2>
419419
<p>at your option, matching the licensing of the upstream project.</p>
420420

421421
</main>
422-
<footer class="mdo-generated">Generated by <a href="https://maphew.github.io/mdo/">mdo</a> 0.4.0 in 0.001s on <time datetime="2026-07-10">2026-07-10</time>.</footer>
422+
<footer class="mdo-generated">Generated by <a href="https://maphew.github.io/mdo/">mdo</a> 0.5.0 in 0.001s on <time datetime="2026-07-10">2026-07-10</time>.</footer>
423423
</body>
424424
</html>

‎docs/adr/0004-state-aware-setup-launcher.md‎

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,10 @@ The launcher installation vehicle is deliberately layered:
107107
2. Homebrew installs a launcher template as package data. `mdo-setup` installs
108108
the per-user launcher when first run, because a formula should not mutate a
109109
particular user's home directory during package installation.
110-
3. `cargo install` has no post-install hook. Document
111-
`mdo-setup --install-launcher`, and have any successful direct invocation of
112-
`mdo-setup` repair/register its launcher as an idempotent fallback.
110+
3. `cargo install` has no post-install hook. Document that users can run
111+
`mdo-setup` once from a shell; successful direct setup invocations
112+
idempotently repair/register the launcher. The hosted installer uses the
113+
internal `--register-launcher-only` mode after copying the binaries.
113114

114115
The fallback cannot solve first-launch discovery for Cargo/Homebrew users; the
115116
documentation must say that Linux users initially run `mdo-setup` from a shell
@@ -138,10 +139,11 @@ and [HKCR merge behavior](https://learn.microsoft.com/en-us/windows/win32/sysinf
138139
Create a per-user Start menu shortcut named “mdo Setup” that targets
139140
`mdo-setup.exe`. Scoop should declare it with the manifest's `shortcuts` field.
140141
Other portable install paths, including Cargo and the current WinGet portable
141-
manifest, use an idempotent `mdo-setup --install-launcher` fallback; a successful
142-
direct setup launch repairs the shortcut. If WinGet cannot express the shortcut
143-
for the portable package, retain this fallback rather than changing installer
144-
technology solely for the launcher.
142+
manifest, should use an idempotent launcher-registration fallback; a successful
143+
direct setup launch should repair the shortcut. This is a future Windows
144+
implementation detail, not a command exposed by the current release. If WinGet
145+
cannot express the shortcut for the portable package, retain this fallback rather
146+
than changing installer technology solely for the launcher.
145147

146148
The hosted Windows installer script should register the shortcut after copying
147149
the binaries, just as the hosted Linux installer registers its desktop entry.

0 commit comments

Comments
 (0)