Bike Outliner 2 Releases
Bike 2 is in preview stage
-
Bike 2.0 (Preview) (253)
- Added outline metadata APIs for extensions.
- Added Edit > Paste > Paste and Render Markdown.
- Fixed Edit > Paste > Paste and Match Style.
- Fixed
selectTextAPI inJSOutlineEditor. - Fixed memory leak; memory should go down again when closing windows.
- Fixed ignoring front-matter in plaintext files unless
bikemd: trueis set. - Fixed default outline path search to be case-insensitive.
- Fixed error in
RTFEncoderthat could crash when pasting (PDF, etc.).
I’ve been working to make it easier for AIs to build Bike extensions. Part of that work is to show the AI how to use Bike’s AppleScript
evaluatecommand to test and debug code snippets interactively. These changes are to support that effort.- Added
explainQuerytoJSOutline. - Improved detail in error reporting from OSA Script
evaluatecommands. - Updated
WebViewDOMScriptManagerto accept inline scripts in addition to file paths.
-
Bike 2.0 (Preview) (252)
- Fixed Improved attribute handling when read/write
.bikefiles - Fixed
{"bikemd": true}frontmatter in Plain Text file opens content as.bikemd
- Fixed Improved attribute handling when read/write
-
Bike 2.0 (Preview) (251)
- Added JSON metadata to all supported formats
- Added Escape Markdown syntax (that you type) in
.bikemd - Added encoding of unordered rows with
+list marker in.bikemd - Updated AppleScript command to
evaluatescripts - Updated to no longer prefix attributes with
data-at runtime - Updated AppleScript
select rowbehavior to match Bike 1.x - Fixed focus mode paragraph
- Fixed Learn and Ignore Word
- Fixed paste into empty document
- Fixed invalid characters no longer breaking file load
- Fixed problems in save dialog when changing file formats
- Fixed cases where autocorrect was doing the wrong thing
- Fixed API bug that could include extra rows when removing or moving rows
- Removed Outline metadata APIs — a more flexible option will be added soon
-
Bike 2.0 (Preview) (247)
.bikemdis now strictly list-based.bikemdnow represents all outline data, using Pandoc attributes when needed- Updated runtime tag names to better align with HTML standards — for example:
link → a,emphasis → em,highlight → mark,strikethrough → s, etc.
Bike Markdown is still a work in progress, but I think a lot closer to a stable format now. More details in the forums and feedback encuraged! Known bugs at moment: Problems with code spans and horizontal rules. Also no escaping is being performed yet, so if you type in Markdown syntax it will be interpreted as such on next file load.
The changing of runtime tag names may break some things. For example those names are used in themes, so you’ll need to update any custom themes you have. Also if you have Bike Extension code the processes attributed strings, the attribute names will have changed.
-
Bike 2.0 (Preview) (246)
- Added Bike Markdown format (.bikemd)
- Added Edit > Copy > Copy as Bike Markdown
- Added to/from Markdown API
- Improved pasting links
-
Bike 2.0 (Preview) (245)
New
- Support for opening row links
- Multiple views of the same outline:
- Window ▸ Duplicate Tab
- Window ▸ Duplicate Tab to New Window
Improved
- Drag-and-drop animations
- Typewriting scrolling animations
Changed
- Use space key in block mode to toggle done
- Dropping a branch on itself now requires holding a modifier key
Fixed
- Document file extension settings
- Row handle clicks sometimes not registering
- Crash when opening a context menu in block-mode rows
API
- Extended Keybinding active modifiers API
- Changed
URLproperty names and mutability
-
Bike 2.0 (Preview) (244)
- Added drag and drop
Also added API to support drag and drop configuration through editor styles. Including:
context.isDragSource,selection-covered(),drop-indicator(), and new decorationcapabilities. -
Bike 2.0 (Preview) (243)
- Added Themes panel in Settings
- Moved Editor Style from View → Settings
- Moved Text Wrap (now “Line Width”) from View → Settings
- Fixed issue: commands no longer affect collapsed or hidden rows
- API updates (for extension authors only):
- selection.rows now returns only visible rows
- Renamed some items—update bike-theme-kit and rebuild. Type errors will appear if your extension uses renamed items.
Themes are currently quite limited. Goal here is to test the concept and basic implementation. I’ll add new capabilities in the future.
-
Bike 2.0 (Preview) (242)
- Fixed OPML file save/load
- Fixed restore split sizes on macOS 26 (Tahoe)
-
Bike 2.0 (Preview) (241)
- Added spelling highlights when typing
- Added find highlights when Command-F finding
- Added search highlights when Command-Shift-F searching
- Active Bike when calling New Document from Dock menu
- Fixed
document.frontmostWindowAPI to not always return null
-
Bike 2.0 (Preview) (240)
- Added Format > Add Link
- Added Format > Show Formatting…
- Added Context menu to outline editor
- Added text replacements (spelling, zzz, etc) on Return
- Highlight active replacement (last, before caret moves)
- Fixed some text rendering issues with RTL text (not all)
-
Bike 2.0 (Preview) (239)
- Added Crash reporter
- Printing shows current focus/folds
- Fixed problem saving as Plain Text
- Fixed Vietnamese (and other) text input problems
- Fixed launch problems on earlier macOS 15.x releases
-
Bike 2.0 (Preview) (238)
- Added License panel
- Added Preview release indicator
- Added Text caret to empty outline
- Added View > Editor Zoom
- Added View > Editor Style (Moved from Window menu)
- Added Restorable state for folded rows
- Added Restorable state for View > Text Wrap, Focus, etc
- Reorganized settings panels
- Changed some of the theme and settings API
- Fixed repeat clicks (now work) on decoration buttons
- Fixed some broken caches, performance is a bit better
- Fixed broken scroll correction, scroll to end of document, etc
Implemented many settings “per editor”. If you change that setting (such as Text Wrap) then it will effect the frontmost editor and also set a new default that new editors will use. Any already open editors will keep their current value.
-
Bike 2.0 (Preview) (237)
- Fixed to embed latest “Bike (default)” style.
-
Bike 2.0 (Preview) (236)
- Added Keybindings API
bike.keybindings.activeModifiers - Added Option-Click on row handle to expand/collapse completely
- Added Hide declared API command from palette by starting name with
.. - Implemented View > Text Wrap menu
- Implemented View > Focus Mode menu
- Implemented View > Typewriter Mode menu
- Fixed Control-o to split line
- Fixed Hide Statusbar menu item label
- Fixed Delete focused row doesn’t crash
- Fixed Crash when undoing deleted rows in some cases
- Fixed Keybindings API initial state in new documents
- Fixed Crash when opening completely empty .bike/.opml files
- Fixed Unit tests running again. Doesn’t effect release, but it’s been a while :)
I had said I would get settings connected this release. Didn’t quite make it, but I did get lots of other features implemented and bugs fixed.
- Added Keybindings API
-
Bike 2.0 (Preview) (235)
- Improved block quote styling
- Improved block selection styling
- Changed
mergeDistancestyle property tomergable - Fixed crash when Option-Return in line with spaces
- Fixed
editor.transactionAPI to return result of passed closure - Fixed block selection to show selection for all rows, not just ends
Lots of work on styling internals that enables new rounded styles for block selection and blockquote rows. Also refined decoration animations to stay in better sync with text content.
-
Bike 2.0 (Preview) (234)
- Added blur behind moving rows
- Added
mergeDistanceto decoration style - Renamed
OutlineStyletoEditorStylein API
When mergeDistance is set similar decorations (equal style & nearby frames) are merged together into an irregular shape. This makes it possible to draw nice exterior borders and rounded corners around decorations that span multiple runs. In a future release I hope to make this work for text and row decorations too.
-
Bike 2.0 (Preview) (233)
- Added click focus to focus in/out
- Added click handle to expand/collapse
- Added click link button to open link
- Added API to add commands to decorations
- Added CommandContext to CommandAction in API
- Added commandName to Decoration style, removed action
- Fixed effectiveRange parameter in AttributedString API
-
Bike 2.0 (Preview) (232)
- Animations polish
- Don’t fade removed rows
- Snap caret when text wrap changes
- Bounce row and caret on split/join (souring on it)
- Improve focus in/out animations
- Improve scale animations (used during filtering)
- Fixed decoration sizes when zoomed out
-
Bike 2.0 (Preview) (231)
231:
- Fixed MORE crashes when reading some unicode
230:
- Added Printing
- Added Finder Preview
- Added Finder Thumbnails
- Fixed clipboard read/write text APIs
- Fixed crash when reading some unicode
-
Bike 2.0 (Preview) (229)
- Added back Find Count
- Added back Text Checking
-
Bike 2.0 (Preview) (228)
- Added back Sort Rows
- Added back Group Rows
- Added back Delete Rows
- Added back Duplicate Rows
- Added back Find & Replace
-
Bike 2.0 (Preview) (227)
- Added back Shortcuts
- Added back AppleScript
- Added back Copy/Paste of rich text
- Added back Go > Back / Forward navigation
Lots of porting Bike 1 code to Bike 2 this release.
I’ve ported Shortcuts and AppleScript support from Bike 1.x. Generally same
features, but with a few wrinkles. For example Bike 2 doesn’t have hoisted rows,
so that API is removed. Also Bike 2 adds run script commands to run Javascript
code in extension app context. -
Bike 2.0 (Preview) (226)
- Fixed crash when opening Window > Outline Path Explorer
Finished user guide documentation for the updated extension system. Also finished related screencasts:
-
Bike 2.0 (Preview) (225)
One step back, two steps forward.
Lots of changes to the extension system. Lots of internal changes to style and
layout systems. Likely introduced some new bugs in the process, but cleaned up a
lot and will get to fixing visual bugs next.High level extension system changes:
-
In previous releases Bike would automatically build extensions for you.
That’s been removed. Now use the Bike Extension
Kit to build extensions. -
In previous releases styles and extensiosn were separate. Now styles are a
part of the extension system. Calling them outline styles now instead of themes. -
New documentation and tutorials to explain it all.
-
-
Bike 2.0 (Preview) (224)
- Added
Outline.getRowById - Fixed Outline Path Explorer window to update
- Removed
sourceparam from Keybindings an Commands APIs
- Added
-
Bike 2.0 (Preview) (223)
- Fixed some memory leaks
- Added
AttributedString.toHTML() - Fixed spelling of
AttributedString.subsringmethod - Added
host_permissionsmanifest key. To use thefetchAPI your extension needs both thefetchpermission and the fetched URL needs to match one of the patterns inhost_permissions.
-
Bike 2.0 (Preview) (222)
- Added Window > Log Explorer for extension developers
- Changed postMessage and onMessage API to use Json instead of strings
-
Bike 2.0 (Preview) (221)
- Improved extension error logging
- Relaxed base
tsconfig.jsonsettings - Added
orderingsupport to sidebar items - Updated Creating Extensions documentation
- Added github repository to share Bike extensions
-
Bike 2.0 (Preview) (220)
- Added bike.commands.toString for debugging
- Added bike.keybindings.toString for debugging
- Added
valueto all cases of OultinePathValue - Fixed keybindings to again recognize modifiers
- Fixed keybindings documention, use - as separator
-
Bike 2.0 (Preview) (219)
- Added
fetch(fetchpermission) API - Added
outlineEditor.observeSelectionAPI - Added
window.observeFrontmostOutlineEditorAPI - Added more editor API for folding and focus testing
- Changed some fields in
outlineEditor.selection - Removed network access in DOMScripts (fetch should always fail)
I have added an example inspector item to the @Bike extension that puts these
changes together. To try it out fully select a word in your outline. You should
see a list of synonyms show in the inspector. Dig into the @Bike extension to
see how it works… but the basic idea isfetchhappens in the app context. It
requires thefetchpermission. It sends results to the DOMScript context.Questions welcome!
- Added
-
Bike 2.0 (Preview) (218)
- Added
bike.showAlertAPI - Added
window.presentSheet(domScriptpermission) API - Added
window.inspector.addItem(domScriptpermission) API - Added URL open method and other URL (
openURLpermission) API - Added type parameters to clipboard API
- Improved zoom animations when filtering
- Show selected rows at full scale when filtering
- Moved bike provided extension code from @Startup to @Bike
- Fixed
console.logoutput to show in Safari inspector - Fixed sidebar clicks to work when multiple windows open
New release! Big effort this time around is giving extensions the ability to
display their own UI in WebViews. Along the way I also managed to reorganize a
bunch of things. Please see discussion in the forums. - Added
-
Bike 2.0 (Preview) (216)
- Added
setMetadataandgetMetadatato outline API - Fixed memory leaks and reloading extensions after code change
- Fixed problems with extension defined keybindings that used modifier keys
- Fixed
<ul>element (root row) attributes to round trip through Bike format
- Added
-
Bike 2.0 (Preview) (215)
- Added sidebar live queries
- Fixed layout bugs (more remain)
- Fixed some memory leaks
Sidebar queries are configured by the extension API. If you have run a previous version of Bike 2 a @Startup extension is installed that doesn’t use that API, so you won’t see live query. If that’s the case you can delete that @Startup extension, and then restart Bike. A new @Startup extension will be created that uses the new API. To do this:
- Open Bike > Extensions… menu item.
- In the Finder window that opens, delete the @Startup extension.
- Restart Bike.
Now when you create a heading in your outline it should show in the sidebar under “Headings”, you might have to expand “headings” to see it. You can modify your @Startup extension to create your own live queries.
-
Bike 2.0 (Preview) (214)
- Added ability to provide id for new rows.
- Added extension API tutorial
-
Bike 2.0 (Preview) (213)
- Added extension API for row text
- Added extension API to create outline from query
- Changed extension API import / export options
- Fixed filtering to select first match in block mode
- Fixed pasting when in text mode (ie Raycast emojis)
- Fixed keybindings breaking after command-tab away from Bike
- Fixed named keys (such as
spaceordownarrow) in keybindings
-
Bike 2.0 (Preview) (212)
Extension API Changes:
- Added
Outline.insertRows,Outline.moveRows,Outline.removeRows - Added
Outline.query,Outline.scheduleQuery,Outline.streamQuery - Added
Outline.importRows,Outline.exportRows - Fixed
console.logto show in Safari insprector and Console.app - Fixed Outline Path Explorer to always show frontmost outline view state
- Fixed live reload of @Startup extension
- Added
-
Bike 2.0 (Preview) (211)
- Simplified Outline > Folding
- Added filtering (Shift-Command-F)
- Added extension API: Commands, keybindings, sidebar items
-
Bike 2.0 (Preview) (210)
Automatic software update is broken for this version. Fixed for next… I think! You’ll need to download and install manually.
The focus of this release is on themes and outline paths. Themes have changed a lot since the previous preview release.
Learn more:
- Watch theme building tutorial
- Read in progress Bike 2 Guide
-
Bike 2.0 (Preview) (209)
- Added software update
- Polished selection model
- Started outline search/filtering. Work in progress
- More app infastructure, including settings. Much of it is not connected