This project is "shared source" for TaskPaper license owners:
- Do modify as you see fit for your own use.
- Do not change or disable any of the licensing code.
- Do not redistribute binaries without permission from [email protected]
- Do submit pull requests if you would like your changes potentially included in the official TaskPaper release.
I want TaskPaper to continue on. Contact me if you want to do something with the code that does not fit under the above conditions and we can probably work something out.
I worked adding features to TaskPaper from around 2007-2018.
Around 2018 I decided that I wanted a new foundation for outlining that wasn't compatible with TaskPaper's approach. Since then most of my time has been spent developing Bike Outliner. I fix TaskPaper bugs and update for macOS releases, but other then that I have not actively worked on TaskPaper.
This has been a bit sad for me as TaskPaper is a nice well polished app. But I only have so much work time, and I'm dedicating that time to Bike Outliner's development.
I hope by making TaskPaper's source available to license holders TaskPaper can continue to grow for those who enjoy it.
TaskPaper's code is spread across a few different projects:
birch-outline.jsThe model layer consisting of outline, attributed string, serialization, query language, and undo.BirchOutline.swiftSwift wrapper around model layer.birch-editor.jsThe view model layer consisting of editor state, selection, visible lines, and style calculations.BirchEditor.swiftSwift wrapper around birch editor view model layer + most of Swift application code. NSTextView based editor, document, window, picker views, etc.TaskPaperTaskPaper specific customization toBirchEditor.swift. The intention was that there might be other apps that build offBirchEditor.swift.
These instructions work for me, but there could very well be system dependencies that I've not accounting for. Let me know if they don't work for you and I'll add extra notes.
TaskPaper uses Swift Package Manager for dependency management. Dependencies are automatically resolved when opening TaskPaper.xcodeproj in Xcode 13.0 or later.
Main Dependencies:
- Sparkle (automatic updates) - https://github.com/sparkle-project/Sparkle
- Paddle (licensing framework) - https://github.com/PaddleHQ/Mac-Framework-V4
No manual dependency installation steps are required. Dependencies will be fetched automatically when you first open the project or build.
If needed, you can manually resolve dependencies using:
swift package resolveThis is a bit of a mess. Goal was to make birch-outline.js and BirchOutline.swift reusable so that other apps could read TaskPaper's file format. Would simplify things to just have a single JavaScript layer and single Swift layer... but getting code to that point would take some time, so that's why it's the way that it is.
Node.js Requirements:
- Node.js v20.x LTS or higher is required
- We recommend using nvm (Node Version Manager) to manage Node.js versions
Installing nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bashBoth BirchOutline/birch-outline.js/ and BirchEditor/birch-editor.js/ directories contain .nvmrc files. Running nvm use in either directory will automatically switch to the correct Node.js version (v20).
Build Steps:
- Install Node.js v20.x LTS (or use
nvm usein the JavaScript package directories) - Install dependencies:
cd BirchOutline/birch-outline.js/ npm install cd ../../BirchEditor/birch-editor.js/ npm install
- Start development build watchers:
# In BirchOutline/birch-outline.js/ npm run start # In BirchEditor/birch-editor.js/ npm run start
- The Xcode project will automatically pick up changes to the JavaScript bundles
Notes:
- Use
npm linkfrom withinbirch-outline.jsso thatbirch-editor.jscan reference the local version - Running
npm run startin both packages ensures an updated webpack build is always in each package's "min" folder - When Xcode builds BirchOutline and BirchEditor, it checks if the JavaScript files have changed and copies new versions into dependencies
Update TaskPaper-Direct-Notes.md ./build.sh # update build number in script, because me dumb!
That should build all versions, direct, direct preview, setapp, and app store
- Direct and setapp version are bundled into a new folder in TaskPaper/build and can be copied from there.
- App store version is found in Xcode organizer and can be submitted from there.