62 Commits
Author SHA1 Message Date
Jan De DobbeleerandJan De Dobbeleer 3b63012568 refactor(cli)!: give fonts a list and an install command
Choosing a font was a five-stage terminal UI: fetch the list, scroll it,
download, unzip, install. It pulled bubbletea, lipgloss, bubbles and a
fuzzy matcher for what amounted to a non-filtering list of names with
one highlighted - and Go runs a linked package's init before main
whether or not the subcommand was invoked, so everyone typing at a
prompt paid for it on every render.

A CLI already has a way to answer "which fonts are there": print them.

  oh-my-posh font list
  oh-my-posh font install Meslo

The list can be grepped, piped and scripted, none of which a picker
allows, and install is what it always was underneath - resolve, fetch,
unzip - now reporting on a status line and a progress bar.

Removes 20 modules including go-runewidth, whose package init built a
2.2MB lookup table nothing in the prompt path ever read. The
atotto/clipboard fork this repo carried goes with them: bubbletea was
the only thing that needed it.

Binary 17,330,176 to 15,981,056 bytes (-7.8%). Init, median of 11 runs,
39.3ms to 6.8ms - on every invocation, prompt renders included.

BREAKING CHANGE: `oh-my-posh font install` now requires a font name; run
`oh-my-posh font list` to see them. The interactive picker is gone, and
with it the --headless flag, which existed to skip it.

Entire-Checkpoint: ef231d69c9bf
2026-07-30 19:44:41 +02:00
Jan De DobbeleerandJan De Dobbeleer b76e33e648 docs: remove Windows Store reference
The badge linked to a listing that is no longer the recommended way to
install on Windows; winget is. Removing it takes the two SVG assets
with it.

Entire-Checkpoint: fdf9cbbb3842
2026-07-30 19:44:41 +02:00
Jan De DobbeleerandJan De Dobbeleer 585f50ae88 feat(website): rebuild the docs around a catalog and a studio
The site asked visitors to read a wall of segment pages to find out
what oh-my-posh could do, and to install it before seeing a prompt.

The homepage now leads with the install command and a rendered prompt.
Every one of the 117 segments is in a searchable catalog generated from
the docs themselves, so it cannot drift from what ships, and each
segment page carries a preview rendered from committed sample data at
build time. The theme gallery inlines the SVGs from the previous
commits instead of loading screenshots.

The studio renders a config live in the browser through the wasm
module, and each segment page embeds the same editor: change the
sample config, watch the prompt redraw, then send the segment to the
studio to build a full theme out of it. Nothing is sent anywhere.

The docs move into one shell around all of it, on a single type and
spacing scale, with a filterable sidebar.

Entire-Checkpoint: dc6fc3bdbdf2
2026-07-30 19:44:41 +02:00
Jan De DobbeleerandJan De Dobbeleer 59e8d08d8b feat(cli)!: export a config to SVG instead of PNG
The PNG exporter rasterized the prompt itself: it re-parsed the ANSI
string, resolved fonts, drew glyphs, and blurred a drop shadow, all to
produce a bitmap that could not be searched, selected, restyled or
scaled. It also carried image and font dependencies for that one
command.

A new svg package encodes the run stream from the terminal writer
(see the previous commit) into a terminal window drawn as vectors:
rounded frame, traffic lights, and one <text> per styled run. Text
stays text.

Everything after the first cut is a rendering fix found by comparing
real themes against what a terminal shows: transparent runs painted as
a cutout rather than a hole, wide glyphs given the room they ink, the
grid taken from the font's own metrics instead of the retired
renderer's picture, template whitespace preserved, the Mono Nerd Font
variants asked for first so icons advance one cell, the cursor placed
where the shell leaves it rather than after the right prompt, short
hex colours resolved, and a segment background ending where its
separator does. The canvas is now the window itself, with no
transparent gutter around it.

BREAKING CHANGE: `oh-my-posh config export image` writes SVG only. The
`--author`, `--background-color`, `--cursor-padding`, `--rprompt-offset`
and `--settings` flags are gone, as is PNG output; a command line using
them now fails rather than quietly producing something different.

Entire-Checkpoint: f6059ae8893a
2026-07-30 19:44:41 +02:00
Jan De DobbeleerandJan De Dobbeleer e1226392a9 chore: normalize line endings 2026-07-15 07:56:25 +02:00
Jan De DobbeleerandJan De Dobbeleer 7ca3e94d01 feat(shell): ass yash support
resolves #7121

Entire-Checkpoint: 595b94d3a0e6
2026-07-13 16:30:38 +02:00
94f627c8bf fix(docs): correct async setting reference and ETag caching note
Replace non-existent async_timeout with the correct top-level async:true
config setting. Reword the remote URL note to reflect ETag caching behaviour
instead of implying a full download on every shell start.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
36d285f005 fix(docs): resolve markdownlint violations
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
36c4817b0a docs(skills): rename ohmyposh.md to SKILL.md and update refs
SKILL.md is the convention for skill-creator; rename to match.
Also update all internal links and skill.md/llms.txt references.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
ab6ff60cd5 docs(skills): optimize ohmyposh skill trigger description
Replace marketing copy with routing-optimized description:
- Add ohmyposh spelling variant
- Cover troubleshooting alongside install/configure
- Mention themes, segments, Nerd Font icons, shell init
- List shells instead of OS platforms

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
1b6cd97639 docs(skills): remove ohmyposh skill evals artifact
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
221d3e8f43 docs(skills): add ohmyposh skill evals
Three eval cases covering Windows/PowerShell install, macOS/zsh install,
and post-install theme configuration with assertions that match the
corrected skill content.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
c9a7b55806 docs(skills): fix ohmyposh skill inaccuracies from eval feedback
- Remove \ (variable no longer exists); show
  plain local path examples instead
- Correct oh-my-posh debug description: it renders the current
  config in debug mode, not a theme browser; move to its own section
- Remove incorrect bash troubleshooting from macOS/zsh guide
- Expand MCP validation section to mention validate_segment tool

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
91e647d922 fix(mcp): harden endpoint and add discovery file
- Move logMessage after null-guard to prevent TypeError on empty body
- Add message.params null-guard before destructuring (InvalidParams)
- Deduplicate tools array into module-level TOOLS constant
- Remove error.message from 500 response to prevent internal leaks
- Add .well-known/mcp.json for standard MCP agent discovery

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
9357344ca2 refactor(website): restructure skill into folder hierarchy
Move from monolithic skill.md to a folder-based skill structure
under /static/skills/ohmyposh/ with:

- ohmyposh.md: root skill entry point with navigation
- installation/{windows,macos,linux}.md: per-OS install guides
- shell/{powershell,bash,zsh,fish,nu,cmd,elvish,xonsh}.md: per-shell setup
- configuration.md: theme selection and customization

Update llms.txt and llms-full.txt to reference skill files
instead of repeating step-by-step content inline.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
74d36565ba feat(website): add AI agent discovery files
Add robots.txt (explicit AI agent allowlist), llms.txt (navigation
manifest with MCP endpoint advertisement), llms-full.txt (full-text
content for RAG pipelines), and skill.md (per-shell setup instructions
for LLMs helping users configure oh-my-posh).

Improves AgentGrade readiness score from 38%.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-25 10:27:46 +02:00
JamBalaya56562andJan De Dobbeleer 59f29d4ac8 docs: version up Victor Mono Nerd Font 2025-12-29 21:32:35 +01:00
Jan De Dobbeleer 00562bf0d8 docs(claude): add image 2025-12-28 15:11:18 +01:00
Jan De DobbeleerandJan De Dobbeleer 944835262f chore: keep downloads from CDN instead of GitHub releases 2025-11-04 10:23:11 +01:00
Jan De DobbeleerandJan De Dobbeleer 2d33f6f92e feat: update install.ps1 to use MSIX packages from GitHub releases
- Remove AllUsers parameter (MSIX installs for current user only)
- Change from MSI to MSIX installers (install-x64.msix and install-arm64.msix)
- Update download URL to GitHub releases instead of CDN
- Restrict support to x64 and ARM64 architectures only
- Use Add-AppxPackage for current user installation
2025-11-04 10:23:11 +01:00
Jan De Dobbeleer a975e21165 chore: remove 386 builds 2025-09-09 19:31:32 +02:00
Jan De DobbeleerandJan De Dobbeleer 6533280ff6 chore(install): use CDN for unix 2024-12-01 17:37:37 +01:00
Jan De DobbeleerandJan De Dobbeleer 15c2aae9d5 chore(install): move to cdn 2024-11-30 11:27:49 +01:00
Jan De DobbeleerandJan De Dobbeleer 12fbb92d06 chore(install): remove quiet param
resolves #5962
2024-11-30 11:27:49 +01:00
Jan De DobbeleerandJan De Dobbeleer 642aadf984 fix(install): correctly download and run MSI
resolves #5937
2024-11-26 11:08:58 +01:00
Jan De DobbeleerandJan De Dobbeleer 4c2f08c726 feat(install): migrate to MSI 2024-11-25 08:18:39 +01:00
Archimedes TrajanoandGitHub f0bcdc62c2 chore(install): allow specifying the version 2024-09-29 11:14:15 +02:00
ArtinandGitHub a741b18d90 docs(install): update Microsoft Store badge and URL 2024-09-17 20:49:36 +02:00
ArtinandGitHub 72b0cda800 feat(website): add theme-based favicon switching 2024-09-10 08:33:36 +02:00
ArtinandJan De Dobbeleer 2bcca1904e feat(website): add logo-light.svg 2024-09-07 21:30:26 +02:00
ArtinandJan De Dobbeleer 096ec27692 chore(website): rename logo.svg -> logo-dark.svg 2024-09-07 21:30:26 +02:00
Sarp UserandJan De Dobbeleer f13eae852b fix(install): add -p flag for absolute path 2024-08-09 11:37:05 +02:00
Jan De DobbeleerandJan De Dobbeleer 55113b8e66 feat(install): use user-writable installation directories by default
relates to #5284
2024-07-17 08:46:53 +02:00
Jan De DobbeleerandJan De Dobbeleer 6aca58eef9 chore: add winget configuration for development
resolves #5054
2024-07-05 09:07:05 +02:00
Jacopo ZecchiandGitHub 10af9c6469 fix(install): remove sudo requirement 2024-06-13 19:11:25 +02:00
Jacopo ZecchiandGitHub d7a33b3de1 chore(install): update install.sh 2024-06-12 16:44:43 +02:00
Jan De DobbeleerandJan De Dobbeleer 5ca802f95e docs(image): add font zip file 2024-02-15 08:50:31 +01:00
Kenta KuboandJan De Dobbeleer d9100953a6 feat: add FreeBSD targets to install.sh 2024-01-06 13:53:41 +01:00
Kenta KuboandGitHub 7b7d0ab523 fix(install): correct flag parsing of install.sh 2024-01-06 13:52:45 +01:00
Jan De DobbeleerandJan De Dobbeleer ac7894b0ee feat(install): allow user to specify themes directory 2024-01-06 08:41:15 +01:00
Jan De DobbeleerandJan De Dobbeleer f6a5f9b5e8 chore: adjust help text towards user writable folder
resolves #4479
2023-11-22 12:08:33 +01:00
Jan De Dobbeleer f40a7bbe8d feat: build linux 386
relates to #4397
2023-10-29 16:32:21 +01:00
Jan De DobbeleerandJan De Dobbeleer dfef173c00 fix(install): validate download before continuing
resolves #4339
2023-10-18 10:40:10 +02:00
Jan De DobbeleerandJan De Dobbeleer 555e8bf6d2 chore(install): fail install on curl errors 2023-08-28 13:43:15 +02:00
ChandanChainaniandJan De Dobbeleer bc56421577 fix(install.sh): missing oh-my-posh binary ubuntu 20 2023-07-05 14:44:27 +02:00
Jan De DobbeleerandJan De Dobbeleer e5b5dcae77 chore(install): clarify sudo command
closes #3991
2023-06-26 10:29:08 +02:00
Jan De Dobbeleer 50fc40a5fe chore: update install script for platform detection 2023-06-05 20:53:43 +02:00
Emil SundinandJan De Dobbeleer 7db81b0ad1 fix: installer should treat aarch64 as arm64 2023-05-25 14:57:56 +02:00
Jan De DobbeleerandJan De Dobbeleer e343ded54a chore(install): add warning when destination is not in PATH 2023-05-18 09:30:32 +02:00
Jan De DobbeleerandJan De Dobbeleer c12d6b50dc chore(install): correct arch for amd64
resolves #3838
2023-05-11 17:20:50 +02:00