Repository navigation
Releases: arnodel/whynot
Release list
whynot 1.0.0-rc.3
whynot 1.0.0-rc.3
This is a pre-release, so Homebrew still installs the latest
release. To try it, download the archive for your platform below,
unzip it, and run whynot (or whynot some-file.md).
Building from source instead:
go install github.com/arnodel/whynot/browser/cmd/whynot@latestChangelog
Features
Bug Fixes
Other Changes
Full Changelog: v1.0.0-rc.2...v1.0.0-rc.3
whynot 1.0.0-rc.2
whynot 1.0.0-rc.2
This is a pre-release, so Homebrew still installs the latest
release. To try it, download the archive for your platform below,
unzip it, and run whynot (or whynot some-file.md).
Building from source instead:
go install github.com/arnodel/whynot/cmd/whynot@v1.0.0-rc.2Changelog
Features
- bbdfa58 feat: View.DocumentBounds and ScrollWithin (#111)
- 8efc5f3 feat: View.ScrollToEnd, to show the end of a document (#106)
- 0a9a928 feat: front matter isn't shown, and is available raw (#108)
- e245c9e feat: hard line breaks (#102)
- 3b6cc8a feat: progressive documents, which grow as their Markdown arrives (#103)
- aeb822c feat: syntax highlighting for inline code, by document-wide language (#99)
Bug Fixes
Full Changelog: v1.0.0-rc.1...v1.0.0-rc.2
whynot 1.0.0-rc.1
whynot 1.0.0-rc.1
This is a release candidate, so Homebrew still installs the latest
release. To try it, download the archive for your platform below, unzip
it, and run whynot (or whynot some-file.md).
Building from source instead:
go install github.com/arnodel/whynot/cmd/whynot@v1.0.0-rc.1Changelog
Breaking Changes
- 416126b feat!: NewView's fonts and stylesheet are options, with defaults (#89)
- 2675279 feat!: package fetch replaces images; images are resolved at Parse (#92)
Features
- a924206 feat: nicer simpletheme presets; every Theme field documented (#94)
- 487b00f feat: the viewers load documents through a registry, with -root (#93)
Bug Fixes
Full Changelog: v0.6.0...v1.0.0-rc.1
whynot 0.6.0
whynot 0.6.0
On macOS:
brew install arnodel/tap/whynotOtherwise, download the archive for your platform below, unzip it,
and run whynot (or whynot some-file.md).
Building from source instead:
go install github.com/arnodel/whynot/cmd/whynot@v0.6.0Changelog
Breaking Changes
- f40b411 feat!: "#id" links scroll by default; OnAnchorClick replaces AnchorScrolling (#56)
- aa33adb feat!: AsyncImage.Fetch takes a context.Context (#58)
- c5901ca feat!: Controller and the input package replace Interaction (#50)
- 091e489 feat!: Frame returns events; the hovered link is a View query (#59)
- 997009c feat!: View keeps position primitives; the Controller scrolls on command (#54)
- b800992 feat!: a View has a scale and a zoom, like a Panel (#74)
- 6982926 feat!: a View is a window onto the canvas's coordinates (#55)
- 249dcae feat!: built-in vertical scrollbar, defined by the style (#52)
- 0b7b370 feat!: systemfont's Register methods return an error (#75)
- 67109f6 feat!: wheel deltas are logical pixels, scaled by the Controller (#70)
- 070df64 feat!: whynot.Panel is a concrete, backend-agnostic type (#53)
- f2c1505 refactor!: Margins is internal; simpletheme declares its own (#39)
- 3315462 refactor!: View.HitTest returns a rectangle; Document.Root removed (#40)
- 61f27aa refactor!: backends/giobackend is its own module (#62)
- 04c617e refactor!: browser and PointerState are internal to the apps (#49)
- 3971a12 refactor!: codeblocks package: one plugin kind, token classes on nodes (#43)
- db4be0e refactor!: ebitenrenderer becomes backends/ebitenbackend (#60)
- 233bdd3 refactor!: giorenderer becomes backends/giobackend, with the Gio programs (#61)
- 977aa3c refactor!: image contract in a public images package; cache to internal/imagecache (#33)
- 4500722 refactor!: kroki.Renderer becomes kroki.Plugin (#69)
- 2ebb73c refactor!: make stylesheets opaque, made by theme packages under styles/ (#31)
- 81acc50 refactor!: move Canvas into a public canvas package (#34)
- afe0821 refactor!: move fonts into a public fonts package; SelectFace takes a dpi (#32)
- a93b6f9 refactor!: move layout and drawing into internal/engine (#37)
Features
- 70e84fb feat: backends' input readers are input.Sources (#51)
- ab2ef96 feat: the welcome page shows the commit a build came from (#72)
Bug Fixes
Other Changes
- cd5487b refactor: engine is the pipeline; View owns position and scroll state (#41)
- cefe2d6 refactor: move the Markdown compiler to internal/markdown (#45)
- 2e970a8 refactor: trim the engine's exported surface (#42)
Full Changelog: v0.5.0...v0.6.0
whynot 0.5.0
whynot 0.5.0
On macOS:
brew install arnodel/tap/whynotOtherwise, download the archive for your platform below, unzip it,
and run whynot (or whynot some-file.md).
Building from source instead:
go install github.com/arnodel/whynot/cmd/whynot@v0.5.0What's new
- Gio backend and app.
giorendererrenders whynot with Gio, alongside the existing Ebitengine backend.cmd/giowhynotis a full viewer built on it, with an editable address bar. Both apps share their navigation, history and loading logic through the newbrowserpackage. The Gio app is live on the web next to the Ebitengine one; this release ships binaries forwhynotonly. - Table of contents for the current document, from the toolbar.
- Mermaid diagrams:
```mermaidcode blocks render as diagrams (via Kroki). - Horizontal scrolling for code blocks and tables wider than the window. On desktop: trackpad, Shift+wheel, or a scrollbar that appears while you scroll or point at the block. On touch: swipe sideways, with momentum; vertical swipes still scroll the page. A fade at the edge shows there's more.
- Web apps: links to web pages open in a new tab. The Gio web app is now the right size on phones, and its touch scrolling has momentum.
Fixes
- Ordered lists now start from their own number (
3.used to render as1.). - List items no longer wrap one space too early.
Breaking changes (library)
Parsereturns a*Document, andNewViewtakes it instead of source bytes:NewView(whynot.Parse(source), faceSelector, ...). Highlighting and code-block plugins areParseoptions:WithSyntaxHighlighter,WithCodeBlockPlugin. TheNewViewoptionsWithHighlighterandWithCodeBlockPluginsare gone.TitleandTOCEntriesmoved fromViewtoDocument.Canvashas a new method,Clip(r image.Rectangle) Canvas: customCanvasimplementations need to add it.Interaction.AccumulateMomentumis replaced byTouchStart/TouchDrag/TouchEnd.- A
RenderingContextwith noImageCacheno longer loads images, and shows their alt text instead.NewViewalways sets one.
Changelog
Features
- 8af63cd feat: add a Gio-based rendering backend (giorenderer), v1 static Canvas (#9)
- 38dc3fc feat: add a table of contents to the document browsers (#14)
- 165e16d feat: add cmd/giowhynot, a Gio-based whynot app (#11)
- abc797c feat: editable address bar for cmd/giowhynot (#12)
- b65b82f feat: extract browser package, migrate cmd/whynot onto it (#10)
- 9b4a4d7 feat: open web page links in a new tab in the web apps (#24)
- 71732df feat: pan wide code blocks and tables sideways by touch (#27)
- fbbd026 feat: publish cmd/giowhynot's wasm build to GitHub Pages (#13)
- 84dd82b feat: scroll code blocks sideways when wider than the view (#26)
- 6e99a1b Render mermaid fenced code blocks as diagrams via Kroki (#15)
Bug Fixes
- 5e6e779 fix: Gio web app is too small on phones and touch flings stop dead (#23)
- 79c2b43 fix: a touch leaves nothing hovered in the Gio app (#28)
- b8a659d fix: sideways scrollbar shows only while scrolling or pointing, then fades (#29)
Other Changes
- 98c2637 refactor: make View render a parsed Document (#17)
- 1b9b01b refactor: move View's scroll and height-estimate state into documentStack (#18)
- b545d2b refactor: place inline parts once and store their positions on LineBox (#19)
- 3692824 refactor: remove repetition from the Markdown compiler (#21)
- af4c27c refactor: stop Blocks creating their own ImageCache during layout (#20)
Full Changelog: v0.4.0...v0.5.0
whynot 0.4.0
whynot 0.4.0
On macOS:
brew install arnodel/tap/whynotOtherwise, download the archive for your platform below, unzip it,
and run whynot (or whynot some-file.md).
Building from source instead:
go install github.com/arnodel/whynot/cmd/whynot@v0.4.0Changelog
Features
- b8e049b feat: add a minimal WASM/browser example (#5)
- 8f134a1 feat: enable goldmark's Typographer extension for smart quotes/dashes (#4)
- ea37f4c feat: momentum scrolling after a touch drag ends (#8)
- 6bdd755 feat: run cmd/whynot itself in the browser, live on GitHub Pages (#6)
- b74fb62 feat: touch support for scrolling, links, and toolbar buttons (#7)
Full Changelog: v0.3.1...v0.4.0
whynot 0.3.1
whynot 0.3.1
On macOS:
brew install arnodel/tap/whynotOtherwise, download the archive for your platform below, unzip it,
and run whynot (or whynot some-file.md).
Building from source instead:
go install github.com/arnodel/whynot/cmd/whynot@v0.3.1Changelog
Other Changes
- f651dc8 Fix soft/hard line breaks gluing words together with no space
- fef8fc1 Stop inserting spaces/breaks between adjacent inline elements; add non-breaking space support (#3)
Full Changelog: v0.3.0...v0.3.1
whynot 0.3.0
whynot 0.3.0
On macOS:
brew install arnodel/tap/whynotOtherwise, download the archive for your platform below, unzip it,
and run whynot (or whynot some-file.md).
Building from source instead:
go install github.com/arnodel/whynot/cmd/whynot@v0.3.0Changelog
Other Changes
- a15ee12 Add CustomFontFaceSelector for loading custom TTF/OTF fonts
- 9149f1f Add StyleSheet.LineHeight for comfortable line spacing within a paragraph
- af2481d Add opt-in syntax highlighting for code blocks (#2)
- c279580 Add systemfont: resolve fonts by name from the host's installed fonts
- e8a4d8e CustomFontFaceSelector: collection-aware registration API
- 657598c CustomFontFaceSelector: default fallback to GoFontFaceSelector
- 9ab1561 Render task list checkboxes as real boxes, not □/■ text (#1)
- 140f2e9 cmd/whynot: use the platform's own fonts for document text
- 822761d ebitenrenderer: fix baseline misalignment when mixing font faces
- a2bcafe examples/customfont: bundle Pacifico as the default font
- 968fdfd examples/customfont: render at the display's real device scale
- a8cf815 examples/systemfont: also register a monospace system font
- 926b906 examples/systemfont: default to Helvetica/Courier, not Arial/Courier New
- 1aa80e1 examples/systemfont: demonstrate bold/italic from a registered collection
- 977b11e systemfont: add RegisterPreferredFont, no font name required
- 3ae69c8 systemfont: log which role each font decision was for
Full Changelog: v0.2.0...v0.3.0
whynot 0.2.0
New Panel ebiten helper
Full Changelog: v0.1.3...v0.2.0
whynot 0.1.3
Tweaks to docs / welcome page
Full Changelog: v0.1.2...v0.1.3