https://coppiceapp.com/blog The Coppice Blog 2022-12-20T16:30:00+00:00 The Coppice Team https://coppiceapp.com tag:coppiceapp.com,2022-12-20:/coppice_2022_2_released Coppice 2022.2 Released 2022-12-20T16:30:00+00:00 2022-12-20T16:30:00+00:00 <p>I'm excited to announce that Coppice 2022.2 is now available to download. As I talked about <a href="https://coppiceapp.com/blog/2022_the_year_in_review">last week</a>, this release has been a long time coming for a variety of reasons, but I wanted to make sure it got out before the Christmas break.</p> <p>This released has focused a lot on linking on canvases. In previous versions of Coppice, links between pages on a canvas have just been simple arrows. They haven't really done much beyond visually linking two pages. You haven't been able to add or remove them beyond clicking links or closing a page. And you haven't been able to have multiple pages link to the same page or have loops of pages. That is, until Coppice 2022.2.</p> <p>Canvas Links are now their powerful tool inside Coppice, letting you map out your thoughts with greater freedom than ever before. Let's take a look at some of their features.</p> <h3>Highlighting Links</h3> <p>Now that Canvas Links are much smarter, Coppice is able to link them back to, well… links. If you hover over any Canvas Link arrow it will highlight all the links that it represents on the page it's linking from. And hovering over a link will highlight any arrows that represent that link.</p> <p>Not only that, Coppice can also detect Canvas Links that no longer have an associated link on a page, drawing them with a dashed line instead.</p> <figure style="width:591px; margin: auto"> <video width="591" height="208" controls title="Deleting a link"> <source src="https://coppiceapp.com/images/blog/coppice_2022_2_released/delete_link.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <h3>Creating & Deleting Canvas Links</h3> <p>You can now create and delete Canvas Link arrows without touching your Pages. To delete an existing Canvas Link just click on its arrow and hit backspace to delete. Creating a Canvas Link to an existing page is as easy as Command-clicking on a link to that page.</p> <p>And for Coppice Pro users you can create a link on a page <strong>and</strong> a canvas in one action with the new Link to Page option in the Canvas menu.</p> <figure style="width:574px; margin: auto"> <video width="574" height="501" controls title="Creating a link between two existing pages"> <source src="https://coppiceapp.com/images/blog/coppice_2022_2_released/link_to_page.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <h3>Multiple Links to Pages</h3> <p>One thing that this flexibility in creating links allowed was the ability to finally link multiple pages to a single page. Previously Coppice had a "parent-child" relationship between linked pages on a canvas, where each page could only have a single parent. Now you can link pages any way you please, meaning that those who prefer to have only a single instance of each page on their Canvas can do so.</p> <p>In fact, if you really enjoy this new way of working with pages, Coppice Pro now lets you make it the default. Go to Settings and enable the new "Link to existing pages by default" and clicking any links on a canvas will link to an existing page over creating a new one (though you can still force it to open a new page by command-clicking the link).</p> <figure style="width:617px; margin:auto"> <img src="https://coppiceapp.com/images/blog/coppice_2022_2_released/multi_page_linking.jpg" alt="4 pages linked together with arrows. The top left says 'Links highlight when you hover over them', with 'hover over' highlighted. The top right says 'Pages can now have multiple pages linking to them', with two arrows going in. The bottom right says 'And can even be part of loops' with an arrow in and an arrow out. The bottom left says 'And if you remove a link from a page the Canvas Link will change appearance'. One arrow going out has a dotted line" style="width:617px;"> </figure> <h3>Other Improvements</h3> <p>I've also added some other great quality-of-life improvements to canvases. The first is that closed hierarchies now open relative to their parent page. Previously, hierarchies would store their absolute position on a canvas. This mostly worked fine, but if you moved an open page and then re-opened the hierarchy then it may appear a distance away from where you expect. Now it shouldn't matter where you move pages.</p> <p>The second big improvement is for accessibility. Those who use accessibility tools like VoiceOver can now use rotors to navigate through all pages or all links on a canvas.</p> <p>Finally, Coppice has a great new icon, thanks to the amazing <a href="https://matthewskiles.com">Matthew Skiles</a>. The old icon has served me well, but it was time to finally update to Apple's new design pattern and Matthew pulled it off perfectly.</p> <figure style="width:256px; margin:auto" class="borderless"> <img src="https://coppiceapp.com/images/coppice-large.png" alt="Coppice Icon" style="width:256px;"> </figure> <hr> <p>I'm incredibly pleased with this version of Coppice, even if I may be disappointed with how long it took. Hopefully changes I'm planning for next year will lead to more frequent updates.</p> <p>For now though, I want to wish you a very wonderful end to 2022 and I hope you enjoy any celebrations in your corner of the world. Here's to 2023 and the many Coppice updates it may bring!</p> <p>I'm excited to announce that Coppice 2022.2 is now available to download. As I talked about <a href="https://coppiceapp.com/blog/2022_the_year_in_review">last week</a>, this release has been a long time coming for a variety of reasons, but I wanted to make sure it got out before the Christmas break.</p> tag:coppiceapp.com,2022-12-13:/2022_the_year_in_review 2022: The Year in Review 2022-12-13T15:00:00+00:00 2022-12-13T15:00:00+00:00 <p>2022 is nearly over and I thought it would be a good opportunity to review the year and what I achieved, as well as what I didn't. I also want to look forward to 2023 and what I hope to do differently.</p> <h3>Coppice Releases</h3> <p>Coppice was simultaneously a success and a disappointment. In the first half of the year I managed to get out version 2022.1, a big update that added numerous new tools for Image Pages, including the ability to link them. It finally got Coppice to the baseline I'd envisioned years ago when I started.</p> <p>Coming next week will be version 2022.2, another big update that changes how linking works on a Canvas. Canvas Links become their own concrete thing, which you can create and delete separately to Pages. It can be a game changer for some workflows.</p> <figure style="width:617px; margin:auto"> <img src="https://coppiceapp.com/images/blog/2022_the_year_in_review/coppice_2022_2.jpg" alt="4 pages linked together with arrows. The top left says 'Links highlight when you hover over them', with 'hover over' highlighted. The top right says 'Pages can now have multiple pages linking to them', with two arrows going in. The bottom right says 'And can even be part of loops' with an arrow in and an arrow out. The bottom left says 'And if you remove a link from a page the Canvas Link will change appearance'. One arrow going out has a dotted line" style="width:617px;"> </figure> <p>That's two major updates that massively improve parts of Coppice, two updates that I am incredibly proud of. Unfortunately, they took a lot longer than I expected. I had hoped to be talking about a 3rd release this year that would get Coppice into the Mac App Store. Unfortunately things got in the way (which we'll get into later) and so development took longer than expected.</p> <p>I'd also planned to improve marketing, with more blog posts, videos, a new website, and more. None of that happened.</p> <h3>Streaming</h3> <p>The highlight of the year for me has been starting streaming. It's helped to give me a stable schedule to work on Coppice and also introduced me to many great new people. On top of that, it's taught me new skills in 3D modelling and Unity development, some of which may be useful for future Coppice plans.</p> <p>It makes a huge difference having a project I can work on where I don't need everything to be at the highest level, where I don't need to worry about things like keeping people's data safe, where it's fun without any stress.</p> <p>If you haven't seen the streams then I highly encourage you to drop in sometime. I stream every Sunday and Monday at 1pm GMT and Wednesday at 6pm GMT over on <a href="https://twitch.tv/pilkycrc">Twitch</a>. Right now I'm focusing on building my interactive 3D overlay, but in the new year I'll be back into Coppice development.</p> <figure style="width:680px; margin:auto"> <img src="https://coppiceapp.com/images/blog/2022_the_year_in_review/stream_overlay.jpg" alt="A 3D stream overlay with a small white robot with a computer screen for a head in a spaceship environment" style="width:680px;"> </figure> <h3>Life</h3> <p>The biggest issue this year has been life getting in the way of things I've wanted to do. I've spent a lot of the year dealing with fatigue. Part of that has been burnout, doing too much between my contract work, Coppice, and other life jobs. I'm hoping a long break over Christmas will do a lot to help me recharge my batteries.</p> <p>Burnout isn't just caused by overwork though, it can also be caused by spending too long on the graft of building something without the reward of releasing anything. My plans for 2023 should hopefully help that.</p> <p>I've also had some health issues that caused my fatigue as well. Thankfully, they seem to have been diagnosed and treated, so I'm now feeling a lot more energetic during the day. This means I'm spending far more time able to work on things that require more thought and less brain fog (such as writing a blog post).</p> <p>So if you've been wondering why there have been so few updates from me this year, besides streaming, it has been primarily down to this. Here's hoping it's all better next year.</p> <h3>2023?</h3> <p>So where do I want to go in 2023? And what do I want to do differently? This next year will be focused on two things: Process and iPad.</p> <p>Process is about building the tools and practices for me to get more content out, faster. The first part of this is smaller releases. I am going to try and focus releases on single features, rather than areas. This means you will get a regular trickle of features rather than a few big splash releases. It also means I get the feeling of accomplishment more regularly.</p> <p>The second part of process is around marketing. I want to build out a process to get out more frequent blog posts, social media posts, and even tutorial videos and advertisements. I'm able to get information out easily while streaming, but I need to share this in a wider away of formats. One example is sharing what I worked on on stream through social media. Setting up a pipeline where that happens after every stream would keep you more informed and ease my workload.</p> <p>Then there is iPad. From day one I've build Coppice with an iPad version in mind. I've not committed to anything concrete before, and I still can't until I've proved that it works, but the next year will be when I embark on that project. I can't say when it will be released. I'm hoping that by this time next year I'm able to say Coppice is available on iPad, but a lot has to happen between now and then.</p> <p>Regardless, I hope I can come back to you this time next year with more good news and fewer problems. Sadly software development always hits bumps in the road, but being open about them at least helps you understand why problems happen. I hope you have a wonderful end to the year and (in a few weeks) a great 2023!</p> <p>2022 is nearly over and I thought it would be a good opportunity to review the year and what I achieved, as well as what I didn't. I also want to look forward to 2023 and what I hope to do differently.</p> tag:coppiceapp.com,2022-05-09:/coppice_2022_1_released Coppice 2022.1 Released 2022-05-09T14:00:00+00:00 2022-05-09T14:00:00+00:00 <p>I'm happy to announce that Coppice 2022.1 is now available for release. I've been working hard on this since the start of the year, focusing on improving the functionality and usefulness of image pages.</p> <h3>Image Linking</h3> <p>The big new feature in 2022.1 is the ability to link <strong>from</strong> image pages. You can now drag hotspots over sections of an image. These hotspots can be linked to other pages or URLs, just like links on text pages. Clicking on the hotspots when viewing an image page will take you to that page (or open it on a canvas). </p> <p>I'm really excited about this feature as it opens up entirely new workflows inside of Coppice. For example, if you're using Coppice for world building for a story, you can have a map of your world with links out to information about locations in it. Or you could be planning out a home renovation and have a floor plan that links out to various options for furniture or materials.</p> <figure style="width:640px; margin: auto"> <video width="640" height="360" controls title="Creating hotspots on an image page in Coppice"> <source src="https://coppiceapp.com/images/blog/coppice_2022_1/linking.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <h3>Rotation</h3> <p>Sometimes images aren't oriented the way you expect. It's annoying to drag an image into Coppice only to find it's on its side or upside down. Thankfully you can now rotate images directly within Coppice.</p> <figure style="width:640px; margin: auto"> <video width="640" height="360" controls title="Rotating an image 90 degrees to the left and right"> <source src="https://coppiceapp.com/images/blog/coppice_2022_1/rotating.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <h3>Cropping</h3> <p>Sometimes you want to focus down on a particular part of an image, so Coppice now supports cropping image pages. This cropping is fully non-destructive so if you change your mind in the future you can move or resize the cropped region.</p> <figure style="width:640px; margin: auto"> <video width="640" height="360" controls title="Cropping an image in Coppice and then undoing the changes"> <source src="https://coppiceapp.com/images/blog/coppice_2022_1/cropping.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <h3>Pro Features</h3> <p>Coppice Pro users gain a bunch of great improvements too. Firstly, you get even more choice when creating image links. Free users can create rectangular hotspots, but Pro users also gain access to Oval and Polygon hotspots, giving you a lot more flexibility.</p> <p>One of the coolest features I've built to date though is auto-linking for images. As you probably know, Coppice Pro has supported auto-linking in text pages from the start, automatically finding text that matches page titles and creating links for them. Well thanks to the power of machine learning, Coppice can now find text within your images and do the same thing. As an added bonus, this also enables Coppice's search feature to match against text inside an image!</p> <figure style="width:640px; margin: auto"> <video width="640" height="360" controls title="Changing a page title and having an auto-link appear over an image page containing text"> <source src="https://coppiceapp.com/images/blog/coppice_2022_1/imageautolinking.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <hr/> <p>You can download Coppice 2022.1 by going to <strong>Coppice > Check for Updates…</strong> in Coppice's menu bar or by clicking the button below</p> <div class="button-row"> <a href="https://mcubedsw.com/download/coppice/latest" class="button big"><strong>Download Coppice</strong></a> </div> <p>I'm happy to announce that Coppice 2022.1 is now available for release. I've been working hard on this since the start of the year, focusing on improving the functionality and usefulness of image pages.</p> tag:coppiceapp.com,2022-02-15:/streaming_coppice_development Streaming Coppice Development 2022-02-15T14:00:00+00:00 2022-02-15T14:00:00+00:00 <p>Software development can seem like a rather opaque practice at times. People tap on keyboards and software comes out at the end. Most people only see the final result, not the many decisions that led to it. You also often don't get much communication with the people behind those decisions, beyond the occasional blog post, tweet, or support email.</p> <p>I've been thinking of ways to help change that with Coppice. Last week you saw one aspect, with the introduction of the <a href="http://coppiceapp.com/blog/dev_diary_january_2022">Dev Diary</a> to chronicle what I have managed to work on the previous month. Another aspect is what I want to talk about today: the Coppice Dev Stream.</p> <h3 id="toc_1">Developing Live</h3> <p>When most people think of live streaming services like Twitch they think of people streaming playing games or chatting with people. However, there's a small but ever-growing community of people developing software too. From games to websites to server side code, developers are sharing their process with people all over the world.</p> <p>I've been enjoying quite a few of these streams. In particular I've enjoyed both <a href="https://twitch.tv/piratesoftware">Pirate Software</a> (who is building a game) and <a href="https://twitch.tv/doigswift">DoigSwift</a> (who build their entire streaming environment in Unity). These streams have inspired me to experiment with building Coppice live.</p> <p>There are multiple benefits for me in this. For one, having a regular streaming schedule helps lock my focus down purely on Coppice. I've found that I'm far more productive while streaming than I would have otherwise been because I'm very present in those 2-3 hours of the stream.</p> <p>I also have the benefit of people in chat offering suggestions when I'm stuck on a problem. I would have got to a solution eventually, but I've had several cases where chat has helped speed me up by pointing out the more obvious answer.</p> <p>Streaming can also help work as a "low effort" marketing tool. Marketing is one of the hardest things for an indie developer to do, and it usually takes away from time that could be spent improving the app. Streaming allows me to make the development part of the marketing. It's too early to say how real this benefit will be, but it doesn't cost me anything to do.</p> <p>Finally, streaming offers me a way to give more back to the community. Others can watch and learn how a Mac app is built. They can bring questions along for me to try and answer. Or they can just see out in the open that everyone makes silly mistakes or writes messy code from time to time.</p> <h3>Building the Stream</h3> <p>I want to go a little bit into how I've built up the stream. The first key part is the video. This is handled via OBS (the <a href="https://obsproject.com">Open Broadcaster Software</a>), which lets me build up various scenes. Most of the time I'm on a scene that captures my iMac's screen and adds an overlay and my little robot avatar over the top.</p> <figure style="width:767px; margin:auto" class="borderless"> <img src="https://coppiceapp.com/images/blog/streaming_coppice_development/obs.jpg" alt="Screenshot of OBS. The top left is a preview of the screen. On the right is a Twitch chat. On the bottom are areas for Scenes, Sources, Audio, and Controls" style="width:767px;"> </figure> <p>The little robot avatar is my answer to the fact I don't want to have a camera on me for several hours. It uses an app called <a href="http://veado.tube">veadotube mini</a>, which lets me set up a series of PNGs that will change based on my audio input.</p> <p>Speaking of audio, that is the next key component. For hardware I'm just using my regular gaming headset. Now I did buy this headset because it's meant to have a better than average mic, but I haven't gone for some sort of fancy set up. With a few audio tweaks in OBS it's sounding pretty good.</p> <p>The background music is a bit more involved. First is finding the music, as you need to get royalty free and DMCA friendly music, but thankfully I've managed to put together a playlist. Next is getting the audio into OBS. This is a bit Rube Goldberg-esque, but essentially I use <a href="https://www.shinywhitebox.com/swb-audio-app">SWB Audio App</a> to create a virtual output for OBS to read. It also creates a virtual input for me to pipe the audio from the Music app to, which I do using <a href="https://rogueamoeba.com/soundsource/">SoundSource</a>. A bit awkward to set up, but it works really well.</p> <p>Finally, I have my <a href="https://www.elgato.com/en/stream-deck-mk2">Stream Deck</a>. This is probably the biggest amount of money I've spent on this set up but, to be honest, the stream was just the justification to finally buy something I've wanted for a while. I've configured various actions to let me switch my OBS streams, switch my avatar between states, post messages to the Twitch chat, and even post my "going live" tweets to both <a href="https://twitter.com/coppiceapp">@coppiceapp</a> and <a href="https://twitter.com/pilky">@pilky</a>.</p> <figure style="width:476px; margin:auto"> <img src="https://coppiceapp.com/images/blog/streaming_coppice_development/stream_deck.jpg" alt="Screenshot of streamdeck app. On the left are buttons for controlling OBS, in the middle are buttons for twitter and twitch, and on the right are buttons for controlling avatar expressions" style="width:476px;"> </figure> <h3>Watching the Stream</h3> <p>If you want to follow along with Coppice's development, ask questions and provide live feedback as I design and code, learn more about software development, or just chat with me and others watching, then you can follow along live at <a href="https://twitch.tv/pilkycrc">twitch.tv/pilkycrc</a>.</p> <p>Currently I'm streaming twice a week. Every Monday I stream from 2pm-5pm UK time (9am-12pm EST). And each week I alternate between Friday from 2pm-5pm and Saturday 2pm-4pm, to fit around other work commitments. If you follow the pilkycrc account on twitch, you can be notified whenever I start streaming.</p> <p>If you can't catch the streams live then you can watch the videos on-demand. The videos go up on Twitch immediately after the stream ends and stay up for 2 weeks. I've also started a <a href="https://www.youtube.com/channel/UCj33jBsBJ5SpkcNxyW9AsuQ">YouTube channel</a> for Coppice where I'll be uploading each stream a few days later.</p> <figure style="width:680px; margin:auto"> <img src="https://coppiceapp.com/images/blog/streaming_coppice_development/youtube.jpg" alt="A grid of 6 youtube thumbnails for Coppice Dev Streams" style="width:680px;"> </figure> <hr> <p>I hope you'll join me as grow both the stream and Coppice itself. As always, if you want to stay up to date with Coppice then also be sure to follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> on Twitter and subscribe to <a href="https://coppiceapp.com/blog/feed.xml">The Coppice Blog</a> </p> <p>Software development can seem like a rather opaque practice at times. People tap on keyboards and software comes out at the end. Most people only see the final result, not the many decisions that led to it. You also often don't get much communication with the people behind those decisions, beyond the occasional blog post, tweet, or support email.</p> tag:coppiceapp.com,2022-02-01:/dev_diary_january_2022 Dev Diary – January 2022 2022-02-01T14:00:00+00:00 2022-02-01T14:00:00+00:00 <p>Back in October <a href="https://coppiceapp.com/blog/indie_development_and_coppice_delays">I wrote about</a> how I wanted to be more transparent about the development of Coppice. There are several ways I'm wanting to do that, but the one I'm focusing on today is a new series of posts called the Dev Diary. This will be a monthly account of what work I managed to get done on Coppice, be that design, development, marketing, or anything else around building and selling an indie Mac app. So let's get started with January's edition.</p> <h3>Recovering from 2021</h3> <p>After the release of version 2021.2 I was feeling dangerously close burnt out. I took the decision to take the whole of December off from working on Coppice, and then take two full weeks off all development work over Christmas. Burn out is a dangerous thing, especially for an indie developer. I've learnt the hard way that it's far better to tackle it early to save yourself in the long run.</p> <p>Thankfully, after this rest I'm now feeling a lot happier, healthier, and more enthusiastic about working on and improving Coppice, which bodes well for the rest of the year.</p> <h3>Starting Streaming</h3> <p>The first thing I worked on this month wasn't actually Coppice itself, but a live development stream. This is a place where people can tune in to watch me work on Coppice live, and bring comments and questions for me to answer as I work. It's another pillar of my transparency strategy and one that is also helping keep me motivated and focused on the task at hand.</p> <p>Most of the work this month was just building the initial stream setup and getting used to the software, but I'm pretty happy with how things are going. I'm planning a more in-depth post next week, but you can check out the stream (including VODs of old streams) over at <a href="https://twitch.tv/pilkycrc">twitch.tv/pilkycrc</a>.</p> <h3>Starting Version 2022.1</h3> <p>The next big version of Coppice is version 2022.1. This will focus heavily on improving the functionality of image pages. The two key areas I'm working on are some basic image editing tools, such as rotate and cropping, and the ability to create links from image pages to other pages.</p> <p>I've already managed to get the rotation functionality built and have made a good start on the cropping functionality. The latter is going to take a lot more time than I anticipated as there are lots of small UX problems to solve.</p> <figure style="width:700px; margin:auto" class="borderless"> <img src="https://coppiceapp.com/images/blog/dev_diary_january_2022/image_cropping.jpg" alt="Screenshot of an app displayed inside Coppice. Part of the image is highlighted by a rectangle, with resize handles around it" style="width:700px;"> </figure> <p>I've also started building out the designs around how linking hotspots might look, though this may take a bit longer to implement. One enjoyable thing about this whole version is it's pushing my graphical coding abilities beyond my usual comfort zone, allowing me to explore parts of Apple's APIs I haven't had opportunity to touch in the past.</p> <figure style="width:700px; margin:auto" class="borderless"> <img src="https://coppiceapp.com/images/blog/dev_diary_january_2022/image_hotspots.jpg" alt="Screenshot of the Coppice website inside Coppice as a page. A rectangle is highlighted and surrounded by dotted lines with resize handles at the corners" style="width:700px;"> </figure> <hr> <p>That will do it for this month's dev diary. As always, if you want to stay up to date on Coppice then be sure to <a href="https://coppiceapp.com/blog/feed.xml">subscribe</a> to The Coppice Blog and follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> on Twitter.</p> <p>Back in October <a href="https://coppiceapp.com/blog/indie_development_and_coppice_delays">I wrote about</a> how I wanted to be more transparent about the development of Coppice. There are several ways I'm wanting to do that, but the one I'm focusing on today is a new series of posts called the Dev Diary. This will be a monthly account of what work I managed to get done on Coppice, be that design, development, marketing, or anything else around building and selling an indie Mac app. So let's get started with January's edition.</p> tag:coppiceapp.com,2021-11-23:/coppice_2021_2_released Coppice 2021.2 Released 2021-11-23T15:00:00+00:00 2021-11-23T15:00:00+00:00 <p>I'm excited to announce that the second major update to Coppice, version 2021.2, is now available to download. This release brings improvements to linking and navigation, plus a huge number of quality of life improvements and bug fixes.</p> <p>You can find a summary of the new changes in the recent <a href="https://coppiceapp.com/blog/sneak_peak_coppice_2021_2">Sneak Peek</a> post, or you can peruse the detailed <a href="https://coppiceapp.com/release_notes">release notes</a> for a comprehensive list of changes.</p> <p>You can download Coppice 2021.2 by going to <strong>Coppice > Check for Updates…</strong> in Coppice's menu bar or by clicking the button below</p> <div class="button-row"> <a href="https://mcubedsw.com/download/coppice/latest" class="button big"><strong>Download Coppice</strong></a> </div> <p>I'm excited to announce that the second major update to Coppice, version 2021.2, is now available to download. This release brings improvements to linking and navigation, plus a huge number of quality of life improvements and bug fixes.</p> tag:coppiceapp.com,2021-11-02:/sneak_peak_coppice_2021_2 Sneak Peak: Coppice 2021.2 2021-11-02T15:00:00+00:00 2021-11-02T15:00:00+00:00 <p>After many <a href="https://coppiceapp.com/blog/indie_development_and_coppice_delays">delays</a>, the next major release of Coppice is almost ready. I'm still putting the finishing touches to it but Coppice 2021.2 should hopefully be out in the next few weeks.</p> <p>2021.2 is focused on improving navigation and linking within Coppice. I've also had the opportunity to use Coppice more intensively the past few months. While I've used Coppice throughout its development, this more recent use highlighted a bunch of smaller fixes and improvements that should make using Coppice a lot more enjoyable. So let's take a closer look!</p> <h3>Redesigned Page Selector</h3> <p>The Page Selector is used in many places in Coppice. It can be used for jumping to a Page, adding a Page to a Canvas, and linking to a Page. The initial design was quite narrow with large rows for each search result. </p> <figure style="width:450px; margin:auto" class="borderless"> <img src="https://coppiceapp.com/images/blog/sneak_peak_coppice_2021_2/page-selector-old.jpg" alt="The old Coppice Page Selector. Each result row has the page title and content on separate lines with large icons on the left" style="width:450px;"> </figure> <p>Part of the reason for these large rows was to allow for a preview of Image Pages. Unfortunately, these previews were rather small and not particularly useful, so I've decided to get rid of them. This opened up the potential for reducing the height of each row by moving everything into a single line, letting you see more results in the same space.</p> <figure style="width:604px; margin:auto" class="borderless"> <img src="https://coppiceapp.com/images/blog/sneak_peak_coppice_2021_2/page-selector-new.jpg" alt="The new Coppice Page Selector. Each result row has the page title, content, and a smaller icon on a single line, allowing more results to be shown" style="width:604px;"> </figure> <p>The next big feature added to the Page Selector is the ability to create Pages. Every Page Selector now has a list of options at the bottom. Selecting one of these will create a new Page, title it with what was entered in the search field, and then perform whatever action you were wanting to do. This makes things like creating a link to a new page far easier, and I can't wait for you to get your hands on it.</p> <figure style="width:604px; margin:auto" class="borderless"> <img src="https://coppiceapp.com/images/blog/sneak_peak_coppice_2021_2/page-selector-create.jpg" alt="The new Coppice Page Selector. The search field contains the term 'Creating'. The selector shows 2 matching results. Below is a section titled 'Create New…' with options 'Text Page' and 'Image Page'" style="width:604px;"> </figure> <h3>Link Inspector</h3> <p>Linking is one of the key features of Coppice. Since its release, Coppice has been pretty good at letting you create links (even helping <a href="https://coppiceapp.com/pro">find links</a> for you). But the UI for editing and removing links left a bit to be desired, and there wasn't really any way to view where a link points without clicking on it and seeing what popped up.</p> <p>To solve this, I've added a new inspector: the Link Inspector. This inspector only contains one control, but it is incredibly powerful. If you select a link it will show it in the inspector. To change a link you can click the Link Control and start typing. Select one of the suggestions and the link will be updated. And to remove a link simply click the x button to the right of the Link Control.</p> <figure style="width:734px; margin:auto"> <img src="https://coppiceapp.com/images/blog/sneak_peak_coppice_2021_2/link-inspector.jpg" alt="3 images of the new link inspector. The first shows an empty control with the title 'Click to add link', the second with a link to a text page titled 'Pages", and the third with an external URL to coppiceapp.com" style="width:734px;"> </figure> <p>The Link Inspector does more than just let you link to existing pages though. The auto-complete is actually a variant of the Page Selector so gains the same ability to create new pages. On top of that, you can start typing a URL to add an external link, no longer needing a separate sheet.</p> <figure style="width:301px; margin:auto"> <img src="https://coppiceapp.com/images/blog/sneak_peak_coppice_2021_2/link-inspector-completion.jpg" alt="The link inspector with the word 'Coppice' typed in the control, with an auto complete based on the page selector" style="width:301px;"> </figure> <h3>Quality of Life Improvements</h3> <p>As I mentioned above, I've been using Coppice a lot more over the past few months and realised there were a few areas where I could make small changes which improve Coppice in big ways:</p> <ul> <li>You can now duplicate Pages, either from a context menu or by holding option when dragging Pages in the side bar.</li> <li>Text Pages now support tables. This adds a lot more flexibility in how you lay out Pages.</li> <li>The Welcome View now lets you drag documents out of its sidebar. This is great for when you want to make a quick copy of a document without opening it or having to search for it in Finder.</li> </ul> <p>There are also numerous bug fixes, including:</p> <ul> <li>Changing the font size or weight now works more reliably</li> <li>Auto-linking no longer links Pages to themselves and now works with smart quotes</li> <li>Ordered lists now start at the correct number</li> </ul> <h3>Pro Features</h3> <p>Finally, Pro users are getting some improvements. The first of these is in the new Page Selector, where you can hold down the option key to display the folders a Page resides in, great for when you have multiple Pages with the same name.</p> <p>You will also find two new options in the inspectors. The first is the ability to exclude a Page from auto-linking. Sometimes you create Pages to act as templates, or maybe they have a common word as their title that is linking too often. Well now you can exclude them with the click of a checkbox. And for those who want to see Page titles permanently on a Canvas, there is now a checkbox to make sure they're always visible, without needing to hover over the Page</p> <p>Finally, I've redesigned the Coppice Pro screen in preferences. Previously, logging into your M Cubed Account to activate Pro left you with a screen that was a bit plain and awkward to parse.</p> <figure style="width:551px; margin:auto" class="borderless"> <img src="https://coppiceapp.com/images/blog/sneak_peak_coppice_2021_2/pro-screen-old.jpg" alt="The old Coppice Pro info screen" style="width:551px;"> </figure> <p>After a quick redesign, everything is better laid out, with additional options such as taking you to your M Cubed Account online.</p> <figure style="width:551px; margin:auto" class="borderless"> <img src="https://coppiceapp.com/images/blog/sneak_peak_coppice_2021_2/pro-screen-new.jpg" alt="The new Coppice Pro info screen" style="width:551px;"> </figure> <hr> <p>There are still a few more bugs to fix and various support documents to update, but I'm hoping to be able to get Coppice 2021.2 and all these great new features out to you in the next few weeks. If you want to be the first to know when it's released, then be sure to <a href="https://coppiceapp.com/blog/feed.xml">subscribe</a> to The Coppice Blog or follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> on Twitter.</p> <p>After many <a href="https://coppiceapp.com/blog/indie_development_and_coppice_delays">delays</a>, the next major release of Coppice is almost ready. I'm still putting the finishing touches to it but Coppice 2021.2 should hopefully be out in the next few weeks.</p> tag:coppiceapp.com,2021-10-07:/indie_development_and_coppice_delays Indie Development & Coppice Delays 2021-10-07T14:00:00+00:00 2021-10-07T14:00:00+00:00 <p>This blog post is going to be a bit different. You may have noticed that things have been a bit quiet of late. It has been 6 months since Coppice 2021.1.1 was released. And in that time there has only been a single post on this blog. You're probably wondering what is going on with Coppice and when the next version is coming out. So I would like to give an update and explanation.</p> <p>You'll also have noticed something in that last sentence: "I". Previously on this blog I've used "we" in all posts, though in reality they have all been written by myself: Martin Pilkington, founder and owner of M Cubed Software and creator of Coppice. It has very much being the Royal We. While Coppice does have some outside contributors, its development is almost exclusively carried out by myself.</p> <p>In a way I've been hiding behind that "we" on this blog, and it has been a bit restricting. So going forward I'm just going to write things on The Coppice Blog in the first person. That way you know you're hearing directly from the person who writes the software you use. </p> <p>I'd kind of forgotten one of the key assets of being an indie developer is being able to be out there a bit more and be closer to those who are using your apps. Not trying to hide that Coppice is written by a single person also has another benefit: it lets me better explain the process of developing Coppice, including things like delays.</p> <p>The way I structure my work week is I spend about half of it doing contract work. This helps provide a steady income to allow me to spend the other half of my week working on other projects. Ideally "other projects" would mean "working on Coppice". Unfortunately, 2021 has mostly had other plans.</p> <p>The lack of updates to Coppice have largely come down to two things taking away that extra time. The first was temporarily needing to spend more time working on contracting. Software development ebbs and flows and occasionally you need to put more time in on some projects, especially when software is getting close to release. So I lost quite a lot of time there.</p> <p>The second big thing has been moving house. Needless to say, moving house during a pandemic, especially when lots of other people are having a similar idea and causing delays to things like banks and solicitors, is not the most relaxing and peaceful of tasks. I was often finding that the week days I'd set aside for Coppice were mostly being taken up with phone calls, emails, and reading paperwork. And by the weekend I was too exhausted and stressed to code. And this all went on for the best part of 6 months</p> <p>Sadly the stress didn't end after moving house. Buying new furniture, sorting out problems with the house, and simply getting everything organised is still an ongoing problem, even several months after moving in.</p> <p>When you're the sole developer, designer, support rep, etc for a company then things like this mean delays to the product. It's often a lot easier for big companies to deal with an individual not having as much focus, and it's easier for that individual to focus if they're only doing one thing. So hopefully being more transparent about the size of the "team" behind Coppice on this blog will make such issues a bit more understandable.</p> <p>Thankfully, things are starting to settle down a bit more. I'm getting back into the swing of developing Coppice and am having a lot of fun doing so. The next major release, 2021.2, is coming along really well and I'm hoping to have it released before the end of October. It features a bunch of great new features and improvements, including a re-designed Page Selector, a new Link Inspector, and much more.</p> <figure style="width:644px; margin:auto"> <img src="https://coppiceapp.com/images/blog/indie_development_and_coppice_delays/page-selector.jpg" alt="Coppice's Page Selector window, now with a more compact layout than previously" style="width:314px;"> <img src="https://coppiceapp.com/images/blog/indie_development_and_coppice_delays/link-inspector.jpg" alt="An inspector in Coppice titled Link. It contains a text field with the word 'Link' entered. To the left is a page icon and the right a button with a cross. Below is a menu showing auto-complete options matching the entered text, plus options to create a new text or image page" style="width:314px;"> </figure> <p>As always, if you enjoyed this post and want to stay up-to-date on everything to do with Coppice (including an upcoming post with a more in-depth look at Coppice 2021.2), then don't forget to <a href="https://coppiceapp.com/blog/feed.xml">subscribe</a> to The Coppice Blog. Also be sure to follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> on Twitter, where you'll often see retweets from my personal account that show off in-progress features and bugfixes.</p> <p>This blog post is going to be a bit different. You may have noticed that things have been a bit quiet of late. It has been 6 months since Coppice 2021.1.1 was released. And in that time there has only been a single post on this blog. You're probably wondering what is going on with Coppice and when the next version is coming out. So I would like to give an update and explanation.</p> tag:coppiceapp.com,2021-06-15:/tech_talk_adding_lists_to_coppice Tech Talk: Adding Lists to Coppice 2021-06-15T14:00:00+00:00 2021-06-15T14:00:00+00:00 <p>Tech Talk is a series of posts revealing some of the inner workings of Coppice and some of the technical challenges we've faced while building it. This time we want to cover how we implemented support for lists in Coppice 2021.1.</p> <p>Our original plan was to quickly follow up our first release of Coppice with an update to improve text editing. Based on what we saw in Apple's APIs, we had expected this to be a relatively simple job and would have allowed us to get a release out before the end of 2020. </p> <p>For the most part, we were correct. We managed to implement features such as editing line height and paragraph spacing very quickly and with minimal trouble. However, lists ended up requiring a lot more effort on our end to implement, delaying release for a few months. So what makes lists so much more difficult?</p> <h3 id="toc_0">Text Editing 101</h3> <p>Rich text in Cocoa is represented by a class called <code>NSAttributedString</code>. This allows you to apply a series of attributes to parts of text. These attributes cover almost everything you can think of, such as the font, the text colour, the paragraph styling, and much more.</p> <p>In mosts cases when editing an attribute, you just want to add or remove an attribute for exactly what the user has selected. For example, if you select some text and make it bold, you don't care if the selection is part way through a paragraph or even a word, you only make the selected part bold.</p> <p>However, certain things require changing attributes beyond the selection. For example, if you select a word but then choose to right align the text, you want it to right align the entire paragraph. This means you need to calculate the range of the paragraph (or possibly even multiple paragraphs) that contain the selected text, and apply the new paragraph styles to that bigger range.</p> <p>Unfortunately, lists add many additional points of complexity:</p> <ol> <li><p>Each entry of a list is its own paragraph. The means that editing a list requires finding and editing all paragraphs in that list</p></li> <li><p>Lists can be nested. If you edit the root level of a list (e.g. changing from a bulleted list to a numbered list), you don't want to apply those edits to any nested entries.</p></li> <li><p>Lists are not just attributes. Almost every other change you can apply to text or a paragraph simply requires editing the attributes. However, lists also require modifying the text. You need to add, modify, or remove the markers at the start of every list entry.</p></li> </ol> <p>There are other forms of complexity as well. If you hit return, it should create a new list item. Hitting return while on an empty line should end the list. And inserting a new list item part way through a numbered list should shift all the numbers below that point. Thankfully, these sorts of changes are handled by a Cocoa class called <code>NSTextView</code> which handles the actual text editing. </p> <p>However, in order for <code>NSTextView</code> to know how to handle these things, we need to mark up our <code>NSAttributedString</code> with information on the location and type of lists. This is done with a class called <code>NSTextList</code>.</p> <h3 id="toc_1">NSTextList</h3> <p><code>NSTextList</code> is a fairly simple class that represents a single list. It only has 3 properties:</p> <ul> <li><code>markerFormat</code> - a string representing the marker. For example, if you wanted a numbered list with markers like <code>#1.</code>, <code>#2.</code>, <code>#3.</code> you could specify this as <code>#{decimal}.</code></li> <li><code>startingNumber</code> - this is only relevant to ordered lists, but lets you change the starting point of the list</li> <li><code>listOptions</code> - Some additional options that aren't really relevant to us.</li> </ul> <p>Each <code>NSTextList</code> represents one "level" of a list hierarchy. These levels are stored in the <code>textLists</code> property on an <code>NSParagraphStyle</code>. If you have a flat list, this will just hold a single <code>NSTextList</code>. In nested lists, it will hold all the parent lists too. For example, if you are 3 levels deep in a list, you would have 3 <code>NSTextLists</code>, one for the root level, one for the second level, and one for the deepest level.</p> <figure style="width:380px; margin:auto"> <img src="/images/blog/tech_talk_adding_lists_to_coppice/list_example.jpg" alt="Example showing a list with 3 levels of nesting, with a second column showing the number of list items in the array for that part of the list. At the first level the array only has the item 'list1', at the second level it has list1 and list2, and at the third level it has list1, list2, and list3" style="width:380px"> </figure> <p>By setting these <code>NSTextLists</code>, you can give <code>NSTextView</code> enough information to let users make changes to the list through regular text editing. However, <code>NSTextView</code> will not actually respond to any changes you make in code (for example, adding a list). That requires a <strong>LOT</strong> more work…</p> <h3 id="toc_2">How to Modify a List</h3> <p>So let's say you have selected some text and want to modify the list attribute in some way (be that making the selection a list, removing a list contained in the selection, or modifying an existing list in the selection). You have the selection and you have a new <code>NSTextList</code> with the changes, but how do we go about correctly modifying the text?</p> <h4 id="toc_3">1. Calculate the range and level of the list</h4> <p>In order to make any changes we need to know the full range of the list in text. We also need to know what level of list to change if we have a nested list. The behaviour in most apps seems to be that you should edit the highest level in the selection. So if you have 3 levels in a list and your selection covers entries in levels 3 and 2, then any changes should apply <strong>only</strong> to level 2.</p> <p>Thankfully, these calculations aren't too difficult. To find the level, you simply enumerate all the paragraph styles in the selection and find the one with the shortest <code>textLists</code> array.</p> <pre><code><span class="kw">if let</span> currentLevel = <span class="kw">self</span>.level { <span class="kw">self</span>.level = min(currentLevel, max(paragraphStyle.textLists.count - 1, 0)) } <span class="kw">else</span> { <span class="kw">self</span>.level = max(paragraphStyle.textLists.count - 1, 0) } </code></pre> <p>(Note: to perform the calculation we created a "List Calculator" class so we can store the values in a property while we perform a calculation. We also zero index the levels, because arrays.)</p> <p>For the range, you again enumerate all the paragraph styles in the selection. This time though, we can use some helper methods to find the range of the list (if there is one) or paragraph (if there isn't). You then combine these ranges together to get the full extent of the list (or the paragraphs to convert to a list).</p> <pre><code><span class="kw">var</span> newRange = paragraphStyleEffectiveRange <span class="comment">//From enumerating the styles</span> <span class="comment">//If we're in a list then we need to get the full range of the list, which may be outside the selection range</span> <span class="kw">if let</span> list = paragraphStyle.textLists.last { <span class="kw">let</span> listRange = textStorage.range(of: list, at: effectiveRange.location) <span class="kw">if</span> (listRange.location != NSNotFound) { newRange = listRange } } <span class="kw">else</span> { <span class="comment">//If we're outside of a list then we just want the current paragraph</span> newRange = (textStorage.string <span class="kw">as</span> NSString).paragraphRange(for: effectiveRange) } <span class="comment">//Merge the ranges</span> <span class="kw">guard let</span> editRange = <span class="kw">self.editingRange</span> <span class="kw">else</span> { <span class="kw">self</span>.editingRange = newRange <span class="kw">return</span> } <span class="kw">self</span>.editingRange = editRange.union(newRange) </code></pre> <p>Once we have our range and level, we can move to the next step</p> <h4 id="toc_4">2. Update the Attributes</h4> <p>Next, we need to update the attributes. This is actually the simplest step, though first we need to store a copy of the attributed string before we modify it (it will become apparent why in the next step).</p> <p>We start to enumerate the paragraph styles in the list's range. All we need to do here is take each paragraph style's <code>textLists</code> array and modify it by either adding, removing, or swapping the <code>NSTextList</code></p> <pre><code><span class="kw">var</span> textLists = newParagraphStyle.textLists <span class="comment">//If we're setting a list then we want to replace the list at the desired level</span> <span class="kw">if let</span> listType = listType { <span class="kw">if</span> (textLists.count > level) { textLists[level] = listType } <span class="kw">else</span> { textLists = [listType] } } <span class="kw">else</span> { <span class="comment">//If we have no list then we're removing all lists</span> textLists = [] } newParagraphStyle.textLists = textLists </code></pre> <p>We then update the attributes on the attributed strings.</p> <h4 id="toc_5">3. Update the List Markers</h4> <p>Finally, we need to update the list markers. This happens in two stages. </p> <p>The first happens while we're enumerating the paragraph styles in step 2. We need to enumerate the lines in the range each paragraph style covers in the old copy of the attributed string we made (as a single paragraph style may be shared across multiple paragraphs). The reason we enumerate the <strong>old copy</strong> of the attributed string, is we want to calculate the ranges for the old markers so we know what range of text to replace.</p> <pre><code>(oldString.string <span class="kw">as</span> NSString).enumerateSubstrings(in: effectiveRange, options: .byLines) { (substring, substringRange, effectiveRange, _) <span class="kw">in</span> <span class="kw">var</span> existingRange = NSRange(location: substringRange.location, length: 0) <span class="comment">//If we had an old list then we want to calculate the marker so we can get its range for replacement</span> <span class="kw">if let</span> oldList = oldParagraphStyle.textLists.last { <span class="kw">var</span> itemNumber = oldString.itemNumber(in: oldList, at: substringRange.location) <span class="comment">//We need to manually handle the startingItemNumber as itemNumber(in:at:) doesn't (despite being giving the list)</span> <span class="kw">if</span> (oldList.startingItemNumber > 1) { itemNumber = oldList.startingItemNumber + (itemNumber - 1) } <span class="comment">//We just need the length of the marker as the location is always the start of the line</span> <span class="comment">//We also add 2 as we always have a tab before and after</span> existingRange.length = oldList.marker(forItemNumber: itemNumber).count + 2 } <span class="comment">//Add the range and text to replace. We don't actually replace here as we don't want to mess up enumerateAttributes()</span> <span class="kw">if let</span> list = textLists.last { replacements.append((existingRange, <span class="string">"\t\(list.marker(forItemNumber: textStorage.itemNumber(in: list, at: substringRange.location)))\t"</span>, newParagraphStyle)) } <span class="kw">else</span> { replacements.append((existingRange, <span class="string">""</span>, newParagraphStyle)) } } </code></pre> <p>We store the existing marker range, the new marker, and the paragraph style for that marker in a <code>replacements</code> array for use in part 2.</p> <p>Part 2 is actually replacing the list markers and happens after we've finished enumerating the paragraph styles. The reason for this is that modifying the list markers can change the length of the text, which can mess up range calculations. By doing all the calculations first, we can then do the replacements in reverse order, ensuring we never have to adjust any ranges.</p> <pre><code><span class="comment">//Going from back to front (so the ranges remain valid) apply all the list replacements</span> <span class="kw">for</span> (range, string, paragraphStyle) <span class="kw">in</span> replacements.reversed() { textStorage.replaceCharacters(in: range, with: string) <span class="comment">//If we're adding a list then we need to make absolutely sure what is added has the paragraph style</span> <span class="comment">//This is especially true for the earliest range we're adding as it may use the attributes of the text before</span> <span class="kw">if</span> (range.length == 0) { <span class="kw">let</span> addedRange = NSRange(location: range.location, length: string.count) textStorage.removeAttribute(.paragraphStyle, range: addedRange) textStorage.addAttribute(.paragraphStyle, value: paragraphStyle, range: addedRange) } <span class="comment">//We also want to update the selectionLocation so the cursor goes back to the start of the location, which may have shifted due to other list items changing above</span> <span class="kw">if</span> (range.location < selectedLocation) { selectedLocation += (string.count - range.length) } } </code></pre> <p>And with all that done you should now have correctly updated lists in your code.</p> <h2 id="toc_6"></h2> <p>That is quite a lot of code, but you can see a more complete version in a <a href="https://github.com/mcubedsw/loose-code/tree/master/TextViewListExample">demo project here</a> (available under an <a href="https://github.com/mcubedsw/loose-code/blob/master/LICENCE.txt">MIT licence</a>). You may be wondering why we are sharing this if it took us so much work to implement. Isn't this just helping potential competitors? Maybe. But we believe that a rising tide lifts all boats. </p> <p>Proper support for lists is a great feature to have in Coppice, but it doesn't define Coppice. If someone takes this code and uses it to implement list support in their app, then that's great. The Mac platform gets a little bit better. And who knows, maybe somebody has a better way of doing this that we've missed and they'll let us know about it.</p> <p>If you enjoyed this post, or just want to stay up-to-date on everything to do with Coppice then don't forget to <a href="https://coppiceapp.com/blog/feed.xml">subscribe</a> to The Coppice Blog or follow <a href="https://twitter.com/coppiceapp.com">@coppiceapp</a> on Twitter.</p> <p>Tech Talk is a series of posts revealing some of the inner workings of Coppice and some of the technical challenges we've faced while building it. This time we want to cover how we implemented support for lists in Coppice 2021.1.</p> tag:coppiceapp.com,2021-03-22:/coppice_2021_1_1 Coppice 2021.1.1 2021-03-22T15:00:00+00:00 2021-03-22T15:00:00+00:00 <p>Coppice 2021.1.1 is now available. It fixes some UI issues with the Link/Jump to Page dialogues and the search sidebar.</p> <p>You can update Coppice by going to <strong>Coppice > Check for Updates…</strong> in the menu bar in Coppice, or by <a href="https://mcubedsw.com/download/coppice/latest">downloading</a> directly from our website. A full list of changes are available on our <a href="http://coppiceapp.com/release_notes">release notes page</a></p> <figure style="width:203px; margin:auto"> <img src="/images/blog/check_for_updates.jpg" alt="Coppice's menu bar with the Coppice/Application menu open. The 'Check for Updates…' item is highlighted" style="width:203px"> </figure> <p>Coppice 2021.1.1 is now available. It fixes some UI issues with the Link/Jump to Page dialogues and the search sidebar.</p> tag:coppiceapp.com,2021-02-16:/coppice_2021_1 Coppice 2021.1 2021-02-16T15:00:00+00:00 2021-02-16T15:00:00+00:00 <p>We're happy to announce the release of Coppice 2021.1, the first major update to Coppice. This release brings a raft of improvements to text editing, a canvas export feature, and numerous bug fixes. For a full list of changes check out the <a href="https://coppiceapp.com/release_notes">release notes</a>, but we'll give you a summary below.</p> <p>You can download Coppice 2021.1 by going to <strong>Coppice > Check for Updates…</strong> in Coppice's menu bar or by clicking the button below</p> <div class="button-row"> <a href="https://mcubedsw.com/download/coppice/latest" class="button big"><strong>Download Coppice</strong></a> </div> <h3>What's New</h3> <h4>Text Editing</h4> <p>The biggest improvements in Coppice 2021.1 are in the editor for text pages. With the initial release of Coppice we focused on implementing the core functionality you expect from a rich text editor, such as the ability to customise the font, the size, and the colour of text.</p> <p>Coppice 2021.1 brings several new options for customising the layout of your text, all found in the new Paragraph Inspector. Firstly, we've given you more control over the spacing of your text with controls for changing the line height and paragraph spacing.</p> <figure style="width:646px; margin: auto"> <video width="646" height="245" controls title="Changing line height and paragraph spacing in Coppice"> <source src="https://coppiceapp.com/images/blog/coppice_2021_1/formatting.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <p>The big new feature though is native support for lists in text. You can now create bulleted and numbered lists, and even nest them several levels deep. </p> <figure style="width:541px; margin: auto"> <video width="541" height="374" controls title="Creating lists in Coppice"> <source src="https://coppiceapp.com/images/blog/coppice_2021_1/lists.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <p>We've also fixed a bunch of bugs, including making the alignment control far more reliable.</p> <br> <h4>Canvas Export</h4> <p>We strongly believe that your data is your own, and part of this is allowing you to share what you create in Coppice with others and to use it in other apps. We already have full support for exporting pages from a Coppice document, but until now there hasn't been a way to export Canvases.</p> <p>With Coppice 2021.1 we've start on the path to rectifying that by adding the ability to export a Canvas as an JPEG image. This is great if you have a Canvas you want to share online or with someone who doesn't have a Mac.</p> <br> <h4>Improved Document Format</h4> <p>The last improvement is hopefully one you won't notice: future-proofing the document format. We occasionally need to change how Coppice stores your data in a document, usually to support new features. To ensure that an older version of Coppice doesn't accidentally corrupt a document, it will first check a version number in the document. If a version of Coppice encounters a newer version of document than it can handle, it refuses to open it.</p> <figure style="width:305px; margin:auto"> <img src="https://coppiceapp.com/images/blog/coppice_2021_1/document_dialogue.png" alt="A macOS alert. The title says 'The document Sample Document.coppicedoc could not be opened. This document was saved by a newer version of Coppice'. The sub title says 'Please download the latest version of Coppice to open this Document" style="width:305px;"> </figure> <p>This works incredibly well, but it's a fairly blunt tool. Thankfully, we've been able to make Coppice smarter, reducing the amount of times we'll need to update the document format in future, making the above dialogue a much rarer occurrence. </p> <p>Unfortunately this change <strong>has</strong> necessitated updating the document version this time, so documents saved with Coppice 2021.1 won't open in version 2020.1.</p> <h3>What Took So Long?</h3> <p>Those who have followed this blog for a while may remember that we had hoped to get this release out before Christmas last year (indeed, we'd originally called this version 2020.2). So why is it only just being released in mid-February?</p> <p>The answer is Lists. We had been working on the assumption that Lists would be relatively easy to add support for, as Apple's technologies actually do most of the hard work for us. We thought we'd just need to provide a UI for the existing list support and it would "just work™". </p> <p>Unfortunately this ended up being <strong>way</strong> more involved than we had expected, requiring a lot more work on our end. In the coming weeks we'll be writing up a new Tech Talk article going into the details of what we had to do to get lists working, so be sure to <a href="https://coppiceapp.com/blog/feed.xml">subscribe</a> to The Coppice Blog to get notified when that is released.</p> <p>We're now looking ahead to the next release: 2021.2. We're only just getting started, but we'll be posting about our progress here and on Twitter, so be sure to follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> for updates.</p> <p>We're happy to announce the release of Coppice 2021.1, the first major update to Coppice. This release brings a raft of improvements to text editing, a canvas export feature, and numerous bug fixes. For a full list of changes check out the <a href="https://coppiceapp.com/release_notes">release notes</a>, but we'll give you a summary below.</p> tag:coppiceapp.com,2020-12-15:/sneak_peek_paragraph_styling Sneak Peek: Paragraph Styling 2020-12-15T15:00:00+00:00 2020-12-15T15:00:00+00:00 <p>Welcome to our first Sneak Peek post. Sneak Peek will show features that we're working on for the next version of Coppice. These features will often still be in development so are subject to change before release. In this post we'll look at the new Paragraph Styling options we're adding to Coppice.</p> <p>Coppice 2020.1 already has support for text styling, allowing you to change the font, size, and colour of some text. However, the options for styling paragraphs is limited to just the alignment. Given the importance of text pages in Coppice, we wanted to focus our first update on giving you more flexibility.</p> <p>When you edit a text page in the new version of Coppice, you will see a new Paragraph inspector on the right. It allows you to change 4 attributes of a paragraph.</p> <figure style="width:209px; margin: auto"> <img src="/images/blog/sneak_peek_paragraph_styling/paragraph_inspector.png" alt="The paragraph inspector with controls in 3 rows. The first is a segmented control for alignment. The second row has text fields and steppers for changing the line height and paragraph spacing. The third row has a pop up button for editing a list" style="width:209px"> </figure> <ul> <li>The first is the alignment, which has been moved from the Font inspector (previously called the Text inspector). This has gained support for aligning text as justified, and has fixed a few issues with the previous implementation</li> <li>Next are controls for line height and paragraph spacing. These let you adjust how much space is between lines of text or below each paragraph</li> <li>Finally is full support for lists, from a simple bullet or numbered list, to nested lists with support for custom list markers.</li> </ul> <figure style="width:754px; margin:auto"> <img src="/images/blog/sneak_peek_paragraph_styling/custom_list_editor.jpg" alt="A text page in coppice with a sheet appearing over it. The sheet has options for customising a list, including the bullet/number, any prefix or suffix, and the starting number." style="width:754px"> </figure> <p>We had actually hoped to ship these changes today as version 2020.2, but unfortunately we hit a few snags during development. So rather than rush the feature out we've decided to delay the release until next year (where it will appear as 2021.1). Giving you a quality update is more important than an arbitrary deadline</p> <p>However, we <strong>were</strong> able to fix some bugs in Coppice so we've packaged those up as 2020.1.2, which you can download now using Coppice's built in software update, or from the Coppice website.</p> <p>Welcome to our first Sneak Peek post. Sneak Peek will show features that we're working on for the next version of Coppice. These features will often still be in development so are subject to change before release. In this post we'll look at the new Paragraph Styling options we're adding to Coppice.</p> tag:coppiceapp.com,2020-12-03:/tech_talk_sparkle_system_profile_improvements Tech Talk: Sparkle System Profile Improvements 2020-12-03T16:00:00+00:00 2020-12-03T16:00:00+00:00 <p>Tech Talk is a series of posts that will reveal some of the inner workings of Coppice. We couldn't have built Coppice without the amazing community of developers and designers on Apple's platforms who share their knowledge with others. Tech Talk is our contribution to that pool of knowledge.</p> <p>In an <a href="http://coppiceapp.com/blog/designing_for_privacy/">earlier blog post</a> we talked about how we designed Coppice to respect your privacy. One part of this was regarding the usage statistics we collect, which are handled by an open-source framework called <a href="https://sparkle-project.org">Sparkle</a>.</p> <h3>Sparkle</h3> <p>Sparkle is a framework for performing software updates. If you've ever installed 3rd party software from outside of the Mac App Store you have likely used Sparkle. It's so widely used as a developer can pretty much drop it into their app and it will handle checking for updates and then downloading, verifying, and installing those updates.</p> <figure style="width:732px; margin:auto" class="borderless"> <img src="/images/blog/tech_talk_sparkle_system_profile_improvements/software_update_window.png" alt="A standard Sparkle Software Update window running in Coppice. It has a title 'A new version of Coppice is available!', followed by text saying 'Coppice 2020.1.1 is now available–you have 2020.1. Would you like to download it now?'. Below are release notes followed by buttons to 'Skip this version', 'Remind me later', or 'Install Update' (which is the focused button)" style="width:732px"> </figure> <p>Another thing Sparkle allows for is collecting anonymous information about a user's system. If the user has opted in, it will send the following information to a developer's server when checking for updates:</p> <ul> <li>The app name & version</li> <li>The CPU type & subtype (e.g. Intel, Apple Silicon, PowerPC)</li> <li>The number of CPU Cores</li> <li>The CPU frequency</li> <li>Whether the CPU is 64 bit</li> <li>The amount of RAM in the system</li> <li>The model of Mac</li> <li>The OS version</li> <li>The system language</li> </ul> <p>This is all potentially useful information for a developer. For example, if an app is particularly memory intensive then knowing how much RAM your users have in their systems can help a lot in knowing how and when to optimise. And knowing the languages people use can help you know what localisations to provide for your app.</p> <h3>Enter Privacy</h3> <p>As we talked about in our blog post on privacy, two of the most important principles are minimising the amount of data you collect and being transparent about it. We care a lot about privacy at M Cubed Software so we wanted to go above and beyond with Coppice. Unfortunately, when it came to Sparkle, this presented a few challenges.</p> <p>The first challenge was transparency. Sparkle shows the information that will be collected when you first opt in to automatic updates, which is excellent for transparency. However, there wasn't a way to view this information again later.</p> <figure style="width:550px; margin:auto" class="borderless"> <img src="/images/blog/tech_talk_sparkle_system_profile_improvements/auto_update_prompt.png" alt="A dialogue with the title 'Check for updates automatically?' It asks the user if Coppice should 'automatically check for updates'. Below is an option to 'Include anonymous system profile' which explains what it sent, including a table listing the exact data sent. At the end are buttons to 'Don't Check" or 'Check Automatically'" style="width:550px"> </figure> <p>Data minimisation was a different challenge. We don't care about certain aspects of the data Sparkle sends. The only information we really care about for Coppice are the OS version, the CPU type, the system language, the app version, and the model of Mac. Now, we could have said "that's all we'll store in our database and we'll ignore the rest" and call it a day. But that unnecessary data would still be sent, it would appear in server logs, and Sparkle would still show we collect it. So we wanted to correct that.</p> <h3>Updating Sparkle</h3> <p>One of the benefits of open-source software is if something doesn't work how you want you can always change it. So we opted to make some additions to the Sparkle framework (specifically the 2.x branch). So what changes did we make?</p> <p>The first is the <code>-[SPUUpdaterDelegate allowedSystemProfileKeysForUpdater:]</code> method. Developers can implement this delegate method and return just those keys they want to collect. That way the keys they don't care about will never be sent to their server.</p> <p>The second is adding the <code>SPUUpdater.systemProfileArray</code> property. This allows developers to get the same data that is displayed in the initial prompt (filtered by the <code>-allowedSystemProfileKeysForUpdater:</code> method) so they can present it to the user themselves at a later date.</p> <p>These changes have now been merged back into the Sparkle 2.x branch so are now available to all developers. These features are what allowed us to create our "Learn More" sheet, which explains in detail what we collect in Coppice and why.</p> <figure style="width:612px; margin:auto" class="borderless"> <img src="/images/blog/tech_talk_sparkle_system_profile_improvements/learn_more_sheet.png" alt="A sheet from Coppice's preferences explaining why analytics are collected. Below is a table showing the data that is sent (OS Version, CPU Type, Model, Language, App Version, and Bundle ID). Above the table is a toggle allowing users to switch between the Raw data or a human readable version" style="width:612px"> </figure> <p>(As an added bonus, we also fixed a bug when reporting CPU Type on Apple Silicon. Sparkle will now provide the correct value when running on Apple Silicon)</p> <hr> <p>We hope you enjoyed this first Tech Talk. We hope to add more updates over time to show more of the tools, technologies, and processes we use to develop Coppice. If you want to stay up to date with all Coppice-related news then be sure to <a href="https://coppiceapp.com/blog/feed.xml">subscribe</a> to the Coppice Blog, follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> on Twitter, and sign up to the <a href="https://coppiceapp.com/#mailing-list">Coppice Newsletter</a>.</p> <p>Tech Talk is a series of posts that will reveal some of the inner workings of Coppice. We couldn't have built Coppice without the amazing community of developers and designers on Apple's platforms who share their knowledge with others. Tech Talk is our contribution to that pool of knowledge.</p> tag:coppiceapp.com,2020-12-02:/coppice_2020_1_1 Coppice 2020.1.1 2020-12-02T15:00:00+00:00 2020-12-02T15:00:00+00:00 <p>Coppice 2020.1.1 is now available. It fixes a crashing bug and a bunch of other small issues we found since our launch last week.</p> <p>You can update Coppice by going to <strong>Coppice > Check for Updates…</strong> in the menu bar in Coppice, or by <a href="https://mcubedsw.com/download/coppice/latest">downloading</a> directly from our website. A full list of changes are available on our <a href="http://coppiceapp.com/release_notes">release notes page</a></p> <figure style="width:203px; margin:auto"> <img src="/images/blog/check_for_updates.jpg" alt="Coppice's menu bar with the Coppice/Application menu open. The 'Check for Updates…' item is highlighted" style="width:203px"> </figure> <p>Coppice 2020.1.1 is now available. It fixes a crashing bug and a bunch of other small issues we found since our launch last week.</p> tag:coppiceapp.com,2020-11-25:/coppice_20201_now_available Coppice 2020.1: Now Available 2020-11-25T19:00:00+00:00 2020-11-25T19:00:00+00:00 <p>After 16 months of design & development, and the help of 100s of testers, we are happy to announce that Coppice is now available to download.</p> <p>You can start cultivating your thoughts by downloading Coppice using the button below.</p> <div class="button-row"> <a href="https://mcubedsw.com/download/coppice/latest" class="button big"><strong>Download Coppice</strong></a> </div> <p>Coppice runs on any Mac running macOS 10.15 or higher, and runs natively on both Intel and Apple Silicon Macs.</p> <h3>Coppice Pro</h3> <p>We're also happy to announce that <a href="https://coppiceapp.com/pro">Coppice Pro</a> is available for purchase. Coppice Pro is an annual subscription that unlocks all the functionality of Coppice for just $19.99 a year. Upgrading to Pro will unlock:</p> <ul> <li>Unlimited Canvases</li> <li>Automatic Page Linking</li> <li>Canvas Themes, and</li> <li>Page Folders</li> </ul> <p>This is only the start for Coppice Pro though, and we'll be adding new features and functionality your subscription all the time.</p> <hr> <p>We want to thank everyone who has helped getting Coppice to where it is now, including <a href="https://twitter.com/matthewskiles">Matthew Skiles</a> who created the awesome icon, <a href="https://twitter.com/stroughtonsmith">Steve Troughton-Smith</a> for his many insights and suggestions during development, and especially to all of our beta testers who have provided amazing feedback and helped us squash bugs.</p> <p>We can't wait to see what you do with Coppice and to hear your feedback. Let us know by tweeting at <a href="https://twitter.com/coppiceapp">@coppiceapp</a> or by emailing us at <a href="mailto:support@mcubedsw.com"><a href="mailto:support@mcubedsw.com">support@mcubedsw.com</a></a>.</p> <p>After 16 months of design & development, and the help of 100s of testers, we are happy to announce that Coppice is now available to download.</p> tag:coppiceapp.com,2020-11-12:/coppice_coming_very_soon Coppice: Coming Very Soon 2020-11-12T16:00:00+00:00 2020-11-12T16:00:00+00:00 <p>Coppice has been a labour of love for the past 16 months. We've been working hard to design and build the best software we can. Building out <a href="https://coppiceapp.com/blog/exploring_coppice">great features</a> and optimising for <a href="https://coppiceapp.com/blog/designing_for_macos_big_sur">new OSs</a>. Ensuring your <a href="https://coppiceapp.com/blog/designing_for_privacy">privacy is protected</a> and that Coppice is <a href="https://coppiceapp.com/blog/designing_for_accessibility">accessible to all</a>. We've also built out some <a href="https://coppiceapp.com/blog/coppice_pro">great functionality</a> for <a href="https://coppiceapp.com/pro">Coppice Pro</a>, to help you get the most out of Coppice.</p> <p>But now is the time to get Coppice into your hands and to see what you can do with it. We're pleased to announce that Coppice will be released on <strong>Wednesday the 25th of November</strong>. Be sure to mark the date in your diary and get ready to start cultivating your thoughts.</p> <p>As always, if you want to be reminded of updates, including the moment Coppice goes live, be sure to subscribe to the <a href="https://coppiceapp.com/blog/feed.xml">Coppice Blog</a>, follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> on Twitter, and sign up to the <a href="/#mailinglist">Coppice Mailing List</a>.</p> <p>Coppice has been a labour of love for the past 16 months. We've been working hard to design and build the best software we can. Building out <a href="https://coppiceapp.com/blog/exploring_coppice">great features</a> and optimising for <a href="https://coppiceapp.com/blog/designing_for_macos_big_sur">new OSs</a>. Ensuring your <a href="https://coppiceapp.com/blog/designing_for_privacy">privacy is protected</a> and that Coppice is <a href="https://coppiceapp.com/blog/designing_for_accessibility">accessible to all</a>. We've also built out some <a href="https://coppiceapp.com/blog/coppice_pro">great functionality</a> for <a href="https://coppiceapp.com/pro">Coppice Pro</a>, to help you get the most out of Coppice.</p> tag:coppiceapp.com,2020-10-27:/coppice_beyond_release Coppice: Beyond Release 2020-10-27T15:30:00+00:00 2020-10-27T15:30:00+00:00 <p>When creating a new app, a developer always has two competing desires:</p> <ol> <li>To add as many features as possible to make the app as powerful as it can be</li> <li>To ship the app quickly</li> </ol> <p>This makes the initial release of any app a balancing act, finding the earliest point at which the app has enough features to be considered useful and worth releasing. However, this means the first release is just a fraction of the vision the developer has for the app. Coppice is no exception to this.</p> <p>So far we've looked at what Coppice will be at launch, but in this post we want to explore what we want Coppice to become. </p> <h3>Frequent Releases</h3> <p><a href="https://coppiceapp.com/blog/coppice_pro">Last time</a>, we discussed how going for a subscription business model means we can release features when they are ready, rather than saving them for a big paid upgrade. The consequence of this is we want to put out small, but frequent updates to Coppice over time. These updates can be more focused, adding or improving a single part of the app at a time. This gets updates to you sooner, without overwhelming you with a mass of changes at once. It also means we can get feedback on changes sooner.</p> <p>This approach of more frequent updates doesn't gel well with the traditional versioning system of 1.0, 1.1, 1.2, etc. as the change going from 1.8 to 1.9 may be the same (or bigger) than 1.9 to 2.0. So instead we will be going for a year-based versioning system. This means the first version of Coppice will be version 2020.1 (the first release of 2020).</p> <h3>The Far Future</h3> <p>With Coppice 2020.1, we have deliberately kept things simple, focusing on the core functionality of the app to provide the foundations on which to grow going forward. We have many ideas of how to improve Coppice, so want to share some of our long-term goals here for 3 of the core concepts in Coppice: Pages, Linking, and Canvases.</p> <p>It's important to note that nothing mentioned here is set in stone. Features we think are a good idea now may not make sense down the road. We also expect to receive a lot of feedback from our users after release which will shape Coppice in ways we haven't even imagined.</p> <br> <h4><img src="/images/blog/coppice_beyond_release/pages.png" style="width:38px; margin-bottom: -5px; margin-right: 5px"> Pages</h4> <p>Pages are at the core of Coppice. They hold your thoughts and ideas. Pages are relatively simple in Coppice 2020.1, with basic editing functionality and just two types: Text and Image.</p> <p>Over time we want to expand both the types of pages and the editing functionality. Some examples of new page types we're considering are PDFs, Markdown, Audio, and Video. With our existing types, we want to expand the formatting options available for Text pages and provide basic editing tools for Image pages</p> <br> <h4><img src="/images/blog/coppice_beyond_release/linking.png" style="width:38px; margin-bottom: -5px; margin-right: 5px"> Linking</h4> <p>Linking is a key feature of Coppice, letting you represent the relationships between your thoughts and ideas. Coppice 2020.1 only supports adding links to a Text Page, but our aim is to support linking in some form from every type of Page. The obvious priority here will be Image Pages, allowing you to turn parts of an image into a link. </p> <p>We also want to investigate more ways of having Coppice help find these links for you, and highlight potential relationships you hadn't considered.</p> <br> <h4><img src="/images/blog/coppice_beyond_release/canvases.png" style="width:38px; margin-bottom: -5px; margin-right: 5px"> Canvases</h4> <p>We want to further enhance Canvases over time to help you better organise your thoughts and ideas. Key to that is improving navigation. We have many enhancements planned to make it quicker and easier to move around your Canvas and find the pages you want.</p> <p>Our vision for Canvases is for them to be more than just a place to put multiple pages. Showing links between pages is the first step, but we want to explore more ways of adding to a canvas, from less formal forms of linking pages, to drawing notes and diagrams directly on the Canvas.</p> <p>Canvases are also great tools for helping others to learn about a topic, so we want to provide ways to export Canvases so you can share them far and wide.</p> <h3>The Near Future</h3> <p>While it is fun to think about the distant future, it's worth looking towards the near future for releases: specifically the rest of 2020.</p> <p>First, we are hoping to announce the release for Coppice 2020.1 in the next few weeks. Be sure to <a href="https://coppiceapp.com/blog/feed.xml">subscribe</a> to the Coppice Blog to be the first to hear about it. </p> <p>Secondly, we would like to get a follow up release (2020.2) out before the end of the year. The focus here will be on some improvements to editing Text pages (in particular adding support for lists) and responding to any early feedback from the launch.</p> <hr/> <p>We're excited to finally be approaching the final leg of our journey in releasing Coppice, and to start work on the next journey of adding new features and functionality. We can't wait to get Coppice into your hands and start hearing what <strong>you</strong> want for the future of Coppice!</p> <p>As always be sure to <a href="https://coppiceapp.com/blog/feed.xml">subscribe</a> to the Coppice blog, follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> on twitter, and sign up to the <a href="/#mailinglist">Coppice Mailing List</a> to get all the latest news and tips on Coppice.</p> <p>When creating a new app, a developer always has two competing desires:</p> tag:coppiceapp.com,2020-10-13:/coppice_pro Coppice Pro 2020-10-13T14:30:00+00:00 2020-10-13T14:30:00+00:00 <p>Over the past few months we've taken a look at a lot of the functionality of Coppice but one thing we haven't mentioned is the business model. So today we're going to take a look at how we're planning to fund Coppice's ongoing development.</p> <h3>What is Coppice Pro?</h3> <p>We want to get Coppice into the hands of as many people as possible. At the same time, we want to make money so we can invest in further improving Coppice over time. To that end, we've decided to split Coppice's functionality up into two tiers: Core features and Pro features.</p> <p>Core features will be available for free in Coppice. You will be able to download Coppice and use it with these features without having to pay a penny. And most importantly, you won't have to worry about a time limited trial expiring.</p> <p>Pro features will be available after purchasing Coppice Pro. These will remove certain limits and provide advanced features to help you get the most out of Coppice. Coppice Pro will further enhance the Core features, with functionality such as advanced organisation and linking tools.</p> <p>Coppice Pro will be available as an annual subscription for just <strong>$19.99 a year</strong>, available through our website.</p> <h3>Subscriptions</h3> <p>Unfortunately subscriptions can be somewhat polarising for some people, so we wanted to discuss a bit more about why we've taken this approach with Coppice.</p> <p>Subscriptions can fundamentally change how you ship software. Using a traditional "paid upgrade" model, developers will release several free updates, but then collect a lot of features up into one large update to justify an upgrade price. This can often mean complete features stay unreleased for weeks or months, waiting for that big "2.0" update. With a subscription model we are freed from this restriction, as we have an ongoing income. This means we can release features when they are ready, getting the benefits of them to you sooner. </p> <p>We are also able to lower the cost of entry. With the "paid upgrade" model, you are effectively asking users to pay up front for the several years of development between major releases. With a subscription model, you are only paying per-year, so we can offer a lower starting price.</p> <p>Subscriptions also offer other benefits. While we have no concrete plans at the moment, our long term goal is to have Coppice available on other platforms beyond the Mac. Subscriptions will allow us to provide a unified payment model across platforms, so you won't have to keep paying separately for each platform.</p> <p>Ultimately, we believe subscriptions provide the best model for sustainable, long-term development, while keeping the cost as low as possible to open up Coppice Pro to everyone.</p> <h3>Core vs Pro</h3> <p>So how do we decide what features will be in the Core tier vs the Pro tier? It helps to define what the core functionality of Coppice is: </p> <ol> <li>To collect your thoughts and ideas,</li> <li>To visually lay out those thoughts and ideas, and</li> <li>To create links between those thoughts and ideas</li> </ol> <p>The Core tier will provide the basic functionality to make each of these possible, whereas the Pro tier will provide additional functionality to truly get the most out of them. Let's take a closer look at what this means in the initial version of Coppice.</p> <h4>Pages</h4> <p>You will be able to add an unlimited number of Pages to your documents in both Core and Pro, using both the initial types of Pages: Text and Images. </p> <p>Coppice Pro will add support for Folders. These will let you group your Pages in the sidebar, helping you to better organise your documents.</p> <figure style="width:232px; margin:auto"> <img src="https://coppiceapp.com/images/blog/coppice_pro/folders.jpg" alt="Coppice's sidebar, showing Pages grouped into Folders" style="width:232px;"> </figure> <h4>Canvases</h4> <p>In the Core tier you will be able to add as many pages to a Canvas as you like, lay them out, and view the relationships between them. However, you will be limited to just one Canvas per document.</p> <p>With Coppice Pro, you will have an unlimited number of Canvases per document. You will also be able to set the Canvas theme (Light or Dark) on a per-Canvas basis, rather than it always automatically changing with the system theme.</p> <h4>Linking</h4> <p>Linking is an important part of Coppice, so the Core tier will allow you to manually create links between pages without any restrictions.</p> <p>We want Coppice to help you find those links though, so with Coppice Pro you will be able to enable Auto-Linking. This will look for references to other Pages as you type and create links for you, leaving you to focus on the content of the Page.</p> <figure style="width:369px; margin: auto"> <video width="369" height="192" controls title="Using Coppice with VoiceOver"> <source src="https://coppiceapp.com/images/blog/coppice_pro/autolinking.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <hr> <p>Over time we will be adding new features to both our Core and Pro tiers. While our focus will be on further improving Coppice Pro, we already have several new features planned for the Core tier. In a few weeks we will be taking a look at our plans for Coppice after its initial release, so be sure to subscribe to the Coppice Blog, the <a href="/#mailing-list">Coppice Mailing List</a>, and follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> on Twitter to stay up-to-date.</p> <p>Over the past few months we've taken a look at a lot of the functionality of Coppice but one thing we haven't mentioned is the business model. So today we're going to take a look at how we're planning to fund Coppice's ongoing development.</p> tag:coppiceapp.com,2020-09-29:/designing_for_accessibility Designing for Accessibility 2020-09-29T15:00:00+00:00 2020-09-29T15:00:00+00:00 <p>Accessibility is something near and dear to our hearts at M Cubed Software. For over a decade we have advocated for making software accessible to everyone, and over that time have helped many other developers to improve the accessibility of their apps. So when it came to developing Coppice, accessibility was high on the priority list.</p> <p>Making an app accessible doesn't just help the 15% of the population living with a disability, it also helps every single user by letting an app better adapt to their needs and workflow. By making accessibility a core part of the design process, rather than simply an afterthought, it ultimately helps you build a better app for everyone. </p> <p>So what are some of the ways we've made Coppice more accessible?</p> <h3>Keyboard Navigation</h3> <p>Coppice is a very visual app, especially on a Canvas. In many cases you will use a mouse to navigate around the UI, but it's also helpful to navigate using the keyboard. We've worked hard to provide support for fully navigating Coppice's UI with just the keyboard by hitting the tab key.</p> <p>This even extends to Canvases, where you can tab between pages, and then the controls within a page. We even flash the page content when you tab to it, to let you know exactly where you are in the UI.</p> <figure style="width:810px"> <video width="810" height="338" controls title="Tabbing through the Coppice UI. Navigating to a page, then to its close button, and then to editing the content"> <source src="https://coppiceapp.com/images/blog/designing_for_accessibility/tabbing.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <h3>Moving Pages</h3> <p>One of the primary tasks you will perform on a Canvas is moving pages around. As well as dragging pages with a mouse, you can use the arrow keys on your keyboard to move the selected pages around the Canvas. Holding down the shift key will move pages 10x as much, letting you quickly zoom about.</p> <figure style="width:346px"> <video width="346" height="270" controls title="Moving a window using the keyboard. First shifting by a few pixels using arrow keys, before moving 10x as much by holding shift and using the arrow keys"> <source src="https://coppiceapp.com/images/blog/designing_for_accessibility/moving.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <h3>Sidebar Sizes</h3> <p>For many people, being able to change the size of parts of the UI can massively improve their ability to use an app. Some people prefer a UI to be more compact to fit more content on the screen at once, whereas others prefer the UI elements to be bigger so they are easier to read and interact with.</p> <p>With Coppice, we support the ability to change the size of the sidebar in a document. By default this matches your system settings, but you can also override this specifically for Coppice, if you prefer something different</p> <figure style="width:761px"> <video width="761" height="372" controls title="Changing the size of the Coppice sidebar from the system default to large, to medium, and then to small"> <source src="https://coppiceapp.com/images/blog/designing_for_accessibility/sidebar.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <h3>VoiceOver (and other assistive tools)</h3> <p>It's also vitally important to provide full support for those who use assistive tools such as VoiceOver. In many cases this just means ensuring controls are correctly labelled in the UI. We have also made the effort to ensure navigating through the UI with assistive tools is as easy as possible, by ensuring the UI has a hierarchy of groups, rather than appearing as one long, flat list of every element in the UI.</p> <p>Coppice also presents other challenges. By its nature, it is a very visual tool. So how do you communicate this to someone who may not be able to see? There are also other actions such as resizing a page. How do you make this functionality available to someone who cannot see the page edges or who may not have the fine motor function to be able to use a mouse?</p> <p>The video below shows some of the solutions to these problems we have added to Coppice. When you select a page using an assistive tool like VoiceOver, it reads out the page type as well as where that page was linked from, which gives you some context as to the relationships on the canvas. Interacting with a page also exposes special resize handles so that users of assistive tools can easily resize a page.</p> <figure style="width:817px"> <video width="817" height="720" controls title="Using Coppice with VoiceOver"> <source src="https://coppiceapp.com/images/blog/designing_for_accessibility/voiceover.mov" type="video/mp4"> Your browser does not support the video tag </video> </figure> <h3>The Future</h3> <p>This is just the start for accessibility in Coppice. As with any aspect of software, there are always ways to improve accessibility. Our goal is to make Coppice one of the most accessible pieces of software around. That's not an easy task for an app as complex and as visual as Coppice, but it's one we intend to continually work on.</p> <p>To achieve this we will need your help. If you ever find something in Coppice that feels inaccessible, please <a href="mailto:support@mcubedsw.com">get in touch</a> and we'll try to fix it as soon as possible. And if you want to try out the features above before release, you can add your name to the waiting list for the <a href="https://coppiceapp.com/beta">Coppice Private Beta</a>.</p> <p>As always, if you would like to stay up-to-date on Coppice, make sure to subscribe to the Coppice Blog, the <a href="/#mailing-list">Coppice Mailing List</a>, and follow <a href="https://twitter.com/coppiceapp">@coppiceapp</a> on Twitter.</p> <p>Accessibility is something near and dear to our hearts at M Cubed Software. For over a decade we have advocated for making software accessible to everyone, and over that time have helped many other developers to improve the accessibility of their apps. So when it came to developing Coppice, accessibility was high on the priority list.</p> tag:coppiceapp.com,2020-09-15:/designing_for_privacy Designing for Privacy 2020-09-15T14:00:00+00:00 2020-09-15T14:00:00+00:00 <p>At M Cubed Software we believe that privacy is a fundamental human right. Sadly it isn't one that is universally protected, and it is common in the software industry for some companies and their apps to vacuum up user data left, right, and centre. We prefer to take different approach, so today we'd like to show you how we have built Coppice and our surrounding infrastructure with Privacy in mind.</p> <p><em>(All information here is accurate as of the time of writing. If you are reading this at a later date some details may have changed, but our principles will always remain the same.)</em></p> <h3>Privacy Policy</h3> <p>The key to privacy is transparency. Transparency about what data we collect, how we collect it, and why we collect it. This level of transparency is something now required by law thanks to the EU's General Data Protection Regulation (GDPR) and takes the form of our <a href="https://www.mcubedsw.com/privacy">Privacy Policy</a>. This outlines the data we collect, the reasons we collect it, and what your rights are with respect to your data. We have just updated this to be even more comprehensive and clear, so be sure to check it out.</p> <h3>Data Minimisation</h3> <p>Privacy is fundamentally about protecting data, and the easiest way to protect a piece of data is to not have that data in the first place. As such, when we were building our websites and the infrastructure to support Coppice, we took a long hard look at every piece of data we stored and asked &quot;is this something that we <strong>need</strong> or merely something that we <strong>want</strong> to collect?&quot; If it's the latter then we tried to remove it.</p> <p>Here are a few examples of how we minimise data collection:</p> <h4>M Cubed Accounts</h4> <p>When you sign up for an M Cubed Account we only ask for your email and password. We don't ask for your name, your address, or any other data that is not absolutely necessary to provide you with a secure way to manage your subscription.</p> <h4>The Coppice Mailing List</h4> <p>Similarly, when you sign up to the Coppice Mailing List we only ask for your email. Sure, it would be nice to have any email we send you start with your name but it isn't necessary for the mailing list to work. We have also chosen a mailing list service that allows us to disable tracking when we send out emails. All we need to know is whether the email failed to get to you, we don't need to track what you do with it after it arrives.</p> <h4>Analytics</h4> <p>We also keep our analytics to the bare minimum. For our websites the story is simple: we only collect essential access logs. </p> <p>For Coppice, we give you an option to send us some basic analytics data to help us improve the app. This is entirely opt in and is stored anonymously on our servers. You can always change your mind in our Preferences window, and we also give you full details of what information we send, as well as exactly how each piece of data helps us make Coppice better. Below is an example from one of our machines.</p> <p>We even went an extra step with this. The tool we use to collect and send this data (Sparkle) is used by many apps on the Mac and can collect a lot more data such as how fast your CPU is, how much RAM you have, etc. For some apps this is very useful information, but for us it isn't necessary. Unfortunately it doesn't allow developers to choose what data is sent, so we opted to customise it to let us only send the data we really need to make decisions about Coppice. When Coppice is released we will be offering these changes back to the Sparkle project so other developers can benefit.</p> <figure style="width:612px; margin:auto" class="borderless"> <img src="/images/blog/designing_for_privacy/privacy-sheet.png" alt="A sheet from Coppice's preferences explaining why analytics are collected. Below is a table showing the data that is sent (OS Version, CPU Type, Model, Language, App Version, and Bundle ID). Above the table is a toggle allowing users to switch between the Raw data or a human readable version" style="width:612px"> </figure> <h3>A Local App Means Local Data</h3> <p>One of the benefits of writing a native app that runs on your machine is that we don't need to handle your data. In fact, unless you actually send us a document you created with Coppice, we don't know anything about what you create with Coppice. Your documents are stored where you want, and you have control over who you give access to them.</p> <h3>Coppice is Our Product, Not You</h3> <p>Unfortunately there are some companies out there that don't view their app or their service as their main product. Instead, they see it as a way to collect the thing they really make money on: your data.</p> <p>We take a different, more &quot;traditional&quot; approach: offering you a great product in exchange for a great price. That is how we make our money, and it makes all of the other points we mentioned above so much easier to implement. It also means that <strong>you</strong> are our number one priority. We don't need to add features and functionality to satisfy some other group of people. Instead we can focus on making sure Coppice keeps providing you value.</p> <hr> <p>So that is a bit about how we view privacy and how it has been designed into Coppice. Privacy is always an ongoing thing, so if we ever need to change something we'll be sure to always be completely transparent with you. If you have any questions related to privacy then please feel free to email <a href="mailto:privacy@mcubedsw.com">privacy@mcubedsw.com</a> at any time.</p> <p>If you would like to stay up-to-date on Coppice, make sure to subscribe to the Coppice Blog, the <a href="/#mailing-list">Coppice Mailing List</a>, and/or follow <a href="https://twitter.com/mcubedsw">@mcubedsw</a> on Twitter.</p> <p>At M Cubed Software we believe that privacy is a fundamental human right. Sadly it isn't one that is universally protected, and it is common in the software industry for some companies and their apps to vacuum up user data left, right, and centre. We prefer to take different approach, so today we'd like to show you how we have built Coppice and our surrounding infrastructure with Privacy in mind.</p> tag:coppiceapp.com,2020-09-01:/the_coppice_private_beta The Coppice Private Beta 2020-09-01T14:00:00+00:00 2020-09-01T14:00:00+00:00 <p>For the best part of a year we have been at hard at work on Coppice, designing interfaces, building features, and fixing bugs. Over that time only a small handful of people have been able to try out Coppice and offer feedback on it. Now, we're happy to announce we're looking to expand that group with the Coppice Private Beta.</p> <p>We're looking for people who would like to help us shape the initial release of Coppice and iron out any bugs we have missed. You can register your interest in the beta at the <a href="/beta">Coppice Private Beta page</a>. Just enter your name and email you will be added to the waiting list. We will start selecting people to join the Coppice Beta soon.</p> <p>Please note that Coppice requires a Mac running macOS 10.15 or higher, so make sure your machine can handle that before signing up.</p> <p>We can't wait to get Coppice into the hands of more people and see what you think.</p> <p>For the best part of a year we have been at hard at work on Coppice, designing interfaces, building features, and fixing bugs. Over that time only a small handful of people have been able to try out Coppice and offer feedback on it. Now, we're happy to announce we're looking to expand that group with the Coppice Private Beta.</p> tag:coppiceapp.com,2020-08-26:/designing_for_macos_big_sur Designing for macOS Big Sur 2020-08-26T14:00:00+00:00 2020-08-26T14:00:00+00:00 <p>Coppice has been under development for close to a year and its interface has undergone many design changes over that time. We had finally got the interface into a state we were happy with a few months ago and were expecting to ship with that interface this Autumn. Then along came Apple with WWDC…</p> <figure style="width: 747px"> <img src="/images/blog/designing_for_macos_big_sur/pre-dubdub.jpg" alt="Coppice, running on macOS Catalina prior to WWDC 2020" style="width: 747px"> <figcaption>Coppice, running on macOS Catalina prior to WWDC 2020</figcaption> </figure> <p>Every developer goes into WWDC week expecting that they'll have to make some changes to their apps. There are the inevitable bugs that new OS versions introduce, and the new platform features to implement. And then, every so often, Apple decides to completely redesign the visual appearance of the OS.</p> <p>The first thing to do when this happens is install the new beta OS and launch your app to get an idea of the damage. Thankfully, in Coppice's case, it wasn't too bad. As you can see in the screenshot below, most of the UI updated just fine.</p> <figure style="width: 747px"> <img src="/images/blog/designing_for_macos_big_sur/post-dubdub.jpg" alt="Coppice, re-compiled to run on macOS Big Sur with no changes. Some toolbar icons are clipped or the wrong size and all on the right side of the toolbar, the selection highlights are misaligned, and the toolbar stretches the full width of the window" style="width: 747px"> <figcaption>Coppice, re-compiled to run on macOS Big Sur with no changes</figcaption> </figure> <p>The bulk of the work that needed to be done was with the sidebar and the toolbar. In simple cases, icons and controls were just misaligned. However, Big Sur is not just a visual update to sidebars and toolbars, but also updates how these work, and what counts as &quot;standard&quot; behaviour.</p> <p>First, the sidebar. Big Sur makes a full height sidebar the new norm. This was thankfully a relatively easy thing to implement and makes a huge difference to fitting in with the new aesthetic. Besides a few bugs fixes not much else had to change.</p> <p>Next, the toolbar, which represents the biggest change. Previously a window had a title bar, containing the window's &quot;traffic light&quot; buttons and the title of the window, and a toolbar full of controls below the title bar. In Big Sur these can both be merged into one.</p> <p>The first change we made was to break up the sidebar/inspector toggles. Previously the convention was to have such controls grouped together, but Apple has moved them to the left and right sides of the toolbar in their apps with Big Sur.</p> <p>Next, we looked at the New Page control. One of the changes to Big Sur is developers can link toolbar items to panes in a split view. In our case this allows us to move the New Page button to above the source list in Big Sur. </p> <figure style="width: 747px"> <img src="/images/blog/designing_for_macos_big_sur/toolbars.jpg" alt="Two images of Coppice's toolbar on macOS Big Sur. The top toolbar image shows the toolbar icons all on the right, with some clipped icons and some icons the wrong size. The bottom toolbar shows the new page item shifted above the sidebar, the toggle sidebar and inspector items split up and put either side of the, and new icons for all toolbar items" style="width: 747px"> <figcaption>Top: initial toolbar after building for Big Sur<br>Bottom: final toolbar for Big Sur.</figcaption> </figure> <p>We also took this opportunity to rethink how the control works. Previously you could click on it and get a menu to select the page type. This is great if you're wanting to make pages of different types, and the final version of the control still works this way if you click and hold on it. However, it made creating many pages of the same type just that little bit harder. To fix this we made it so that simply clicking on the button will now create a page of the same type as the last page you created. It's an example of how having to redesign for a new OS can help improve things for users on older OSes too.</p> <figure style="width:300px; margin: auto"> <img src="/images/blog/designing_for_macos_big_sur/old-create-page.jpg" alt="The old create page button, a basic pull down control with a dedicated 'new page' icon" style="width: 139px"> <img src="/images/blog/designing_for_macos_big_sur/new-create-page.jpg" alt="The new create page button. The icon now shows the text page icon, and the menu shows page type icons next to the menu item title" style="width: 139px"> <figcaption>Left: The old create page control<br>Right: the new create page control</figcaption> </figure> <p>Finally, we have the icons. Apple has built up a large collection of icons for developers to use over the past few years called SF Symbols. These help to give a more consistent look and feel to the platform. With Big Sur, Apple has brought this collection of icons to the Mac.</p> <p>We wanted to replace the icons in Coppice with these new icons. Unfortunately though, they don't work on macOS Catalina. To work around this we decided to re-create the icons ourselves, so we can keep them consistent across platforms. We also added some of our own, such as for the Canvases item in the sidebar.</p> <p>This also had another benefit. Traditionally, icons like this have been designed to perfectly align with pixels on your screen. This helps keep them crisp, clear, and easy to understand. Unfortunately, Apple's new icons are designed to be infinitely scalable, which means they don't do this pixel alignment. This isn't too bad at large sizes, but at the sizes required for use in most apps it can lead to them looking very blurry, especially on non-retina displays. By re-creating the icons ourselves, we were able to fix this issue, so they should look crisp no matter what Mac you run on.</p> <figure style="width:276px; margin:auto"> <img src="/images/blog/designing_for_macos_big_sur/sfsymbols.jpg" alt="A selection of icons from the sidebar and toolbar of Coppice. The top row shows SFSymbols icons, which are all blurry. Below are the re-created icons optimised for non-retina displays with non of the blurriness"> <figcaption>SF Symbols (the top row of icons) vs <br>manually re-created icons (the bottom row)</figcaption> </figure> <p>In case it is a bit hard to see the difference, here is the same image scaled up. Note that in both cases these images show non-retina versions of the icons.</p> <figure style="width:552px; margin:auto"> <img src="/images/blog/designing_for_macos_big_sur/sfsymbols-scaled.jpg" alt="A selection of icons from the sidebar and toolbar of Coppice. The top row shows SFSymbols icons, which are all blurry. Below are the re-created icons optimised for non-retina displays with non of the blurriness"> </figure> <hr/> <p>So that is some of the work we have done to help make sure Coppice is ready for Big Sur from day one. Be sure to subscribe to the Coppice Blog, sign up to the <a href="/#mailing-list">Coppice Mailing List</a>, and/or follow <a href="https://twitter.com/mcubedsw">@mcubedsw</a> on Twitter to stay up to date on Coppice's development.</p> <p>Coppice has been under development for close to a year and its interface has undergone many design changes over that time. We had finally got the interface into a state we were happy with a few months ago and were expecting to ship with that interface this Autumn. Then along came Apple with WWDC…</p> tag:coppiceapp.com,2020-08-18:/why_create_coppice Why Create Coppice? 2020-08-18T14:00:00+00:00 2020-08-18T14:00:00+00:00 <p>Last week we took a look at Coppice's features and interface, looking at <strong>what</strong> Coppice is. This week we'd like to take a step back and talk about <strong>why</strong> Coppice exists. There's little point in creating a solution unless there is a problem to solve. So what problems is Coppice trying to solve, especially in a market that is replete with apps to let you take notes?</p> <h3>The Problems</h3> <p>There is a principle with programming that you should optimise your code for readability, as anyone working on that code will spend far more time reading it than writing it. This principle is not limited to just code though, it can apply to any sort of information. </p> <p>There are plenty of apps out there that are excellent for collecting information, for taking notes, etc. They optimise for getting information into the app, but allowing you to actually <strong>use</strong> that information is often a secondary thought. They offer basic tools such as grouping, sorting, and searching. Some apps even use machine learning to help surface what they think might be relevant. However, they all assume that once you've found that piece of information, that's all you needed to do.</p> <p>The second problem is these apps don't treat information as intrinsically interconnected. Again, you can do things like create links between bits of information, but these merely navigate between information. They don't treat the relationship as a first class citizen, nor really allow you to view all these connected bits of information at once. This promotes users to create fewer entries in the app, but make each entry bigger, such as having large sprawling notes that contain multiple thoughts or ideas.</p> <h3>The Solution</h3> <p>Coppice tries to solve these two specific problems. It is optimised for using information over collecting it, and it promotes using smaller but interconnected Pages rather than a few large sprawling notes. This is visible in many of the concepts and design choices in Coppice.</p> <p>One of the first things you will find is that Coppice is a document-based app. It is not designed to be a central repository of all your knowledge, but series of documents focused on understanding particular things. This lets you keep unrelated things isolated, essentially letting you explicitly state that two bits of information <strong>don't</strong> have any relationship by having them in separate documents. After all, there's no reason why the information on that client project for work should be held in the same library as the information on redecorating your kitchen at home.</p> <p>Next, Canvases let you visually organise these thoughts on your computer. We do this all the time in the real world, from laying out papers on a desk to drawing on a whiteboard. However, unlike the real world Coppice can give you an ever expanding space to grow your thoughts.</p> <p>Canvases also allow you to see the relationships between bits of information. When you open a linked Page on a Canvas, there will be an arrow between the two Pages showing the relationship. This makes the relationship a concrete and visible part of understanding your thoughts. This can also help you see relationships you have yet to make. If you place two pages close to each other on a Canvas, but they don't have an arrow between them, maybe that's a sign to you that they should be linked.</p> <p>These relationships can also depend on context. You may want the same collection of Pages to be grouped or linked differently in two different contexts. To solve this, Coppice Pro allows you to have as many Canvases as you like, giving you many different views on the information in a document</p> <h3>Examples</h3> <p>These high level concepts are all well and good, but what does this look like in practice? Here are a few examples from our own usage of Coppice:</p> <section style="margin: 0px 30px"> <h4>Learning a new Subject</h4> <p>A key part of building and selling any piece of software is learning new things. One of the things we needed to learn was how to set up and handle payments with our payment processor. This required reading their documentation and creating notes. As this required learning about many topics, Coppice was perfect for the task.</p> <p>We created a Canvas and added Pages as we moved through the payment processor's documentation. As we had multiple Pages on screen at once we were able to add the information we found to the appropriate Page, so that it fit the mental model we were building as we learned.</p> </section> <section style="margin: 0px 30px"> <h4>Running an RPG</h4> <p>At M Cubed Software we enjoy playing table-top RPGs. If you have ever run such a game, you may know that it requires keeping track of a lot of information: locations, characters, plot points, player backstories. It's an ever-changing, ever-growing story, and one that requires the ability to think quickly and improvise to what your players choose to do.</p> <p>You can use Coppice to store all the information on the campaign you are running. You might create a Page to represent a town in your world, then create linked pages for all the locations in that town, which in turn link to pages on characters the players might find in that location. </p> <p>You can then use a Canvas to organise information that you think may be relevant for the next session you play, but you can know that any related information will always just be a click away if you need it.</p> </section> <hr/> <p>So that is some of the thought process behind why we built Coppice, and why Coppice works the way it does. What ways will you use Coppice? Let us know at <a href="https://twitter.com/mcubedsw">@mcubedsw</a> on Twitter.</p> <p>Next week we'll be talking about how we re-designed parts of the Coppice UI for Apple's upcoming macOS release: Big Sur. If you don't want to miss that and other updates on Coppice's development be sure to subscribe to the Coppice Blog. Alternatively, you can now sign up to our mailing list, which you can find at the bottom of the <a href="https://coppiceapp.com">Coppice home page</a>.</p> <p>Last week we took a look at Coppice's features and interface, looking at <strong>what</strong> Coppice is. This week we'd like to take a step back and talk about <strong>why</strong> Coppice exists. There's little point in creating a solution unless there is a problem to solve. So what problems is Coppice trying to solve, especially in a market that is replete with apps to let you take notes?</p> tag:coppiceapp.com,2020-08-13:/exploring_coppice Exploring Coppice 2020-08-13T14:00:00+00:00 2020-08-13T14:00:00+00:00 <p>Last week we launched the Coppice website, where you can learn what Coppice is and the concepts behind it. This week we want to delve deeper into the actual app and show you what these concepts look like in practice. So let's take a tour through Coppice's interface.</p> <p><em>Note: the screenshots here are from an alpha build running on macOS Catalina, so may look a bit different to those on the home page</em></p> <section class="right"> <div> <h3>Sidebar</h3> <p>The primary way to navigate through a document in Coppice is via the sidebar. This contains a list of all the Pages in your document, as well as providing you access to your Canvases. Pages can be ordered however you like and, with Coppice Pro, can be grouped into folders for easy organisation.</p> </div> <figure> <img src="/images/blog/exploring_coppice/sidebar.jpg" alt="A standard mac app sidebar. The top row says Canvases. Below are rows for pages and a folder" style="width:261px; height: 523px"> </figure> </section> <section class="centre"> <h3>Editors</h3> <p>Editors take up the bulk of the window. If you select a Page in the sidebar you will be presented with that Page's editor. Each type of Page has its own editor. The first version of Coppice features two type of Pages: Text and Images. Text Pages give you a rich text editor, whereas Image Pages provide a more modest editor allowing you to set the image.</p> <p>Selecting Canvases in sidebar opens up the Canvases editor, which requires a more in-depth look.</p> <figure style="width:565px"> <img src="/images/blog/exploring_coppice/editors.jpg" alt="A text editor in the middle of an application window. It shows multiple text styles in the one page" style="width:565px"> </figure> </section> <section class="centre"> <h3>Canvases</h3> <p>On the left is a list of Canvases in your project, and on the right is the editor for the selected Canvas. The core experience of Coppice is adding Pages to a Canvas and visually arranging them to help you make sense of the thoughts they represent.</p> <figure style="width:807px"> <img src="/images/blog/exploring_coppice/canvases.jpg" alt="A list on the left side shows previews of each canvas. The majority of the image shows a canvas with several pages containing text laid out. Arrows go from the centre page to various pages surrounding it." style="width:807px"> </figure> <p>Adding a Page to a Canvas is as simple as dragging it from the sidebar. You can also add Pages to a Canvas using the Menu Bar or by right clicking on Pages in the sidebar.</p> <p>By default, Pages have a minimalist appearance, only showing their content. Hovering over a Page will show more details, such as the Page's title, as well as letting you close the Page. You can move and re-size pages much like windows on your Mac, so you can position and size them however you like. You can also select a Page by clicking it. You can select multiple Pages by dragging a selection on the Canvas or by shift clicking, much like selecting files on your Desktop.</p> <p>Each Page on your Canvas features its full editor, letting you modify the Page directly on the Canvas. To start editing a Page you simply click it once to select it, then you have access to the full array of editing functionality for that Page.</p> </section> <section class="right"> <div> <h3>Inspectors</h3> <p>On the right of a document's window in Coppice are the Inspectors. Inspectors allow you to modify attributes of an object, such as a Page's title, a Canvas's theme, or the current font when editing text. Which Inspectors are visible will change depending on what you have selected in the editor.</p> </div> <figure> <img src="/images/blog/exploring_coppice/inspectors.jpg" alt="The right side of a Mac window showing inspectors for editing the Page title, and for styling text inside the page." style="width:261.5px"> </figure> </section> <section class="centre"> <h3>Page Selector</h3> <p>The Page Selector is a special window that can appear in certain circumstances. It allows you to search through the Pages in your document and then selected one using only the keyboard, in a very similar way to Spotlight.</p> <figure style="width:440px"> <img src="images/blog/exploring_coppice/page-selector.jpg" alt="A window with a search field at the top with the placehold text 'Jump to page' and a magnifying glass icon to the left. Below is a list of pages showing the titles and a snippet of content from each page" style="width:440px"> </figure> <p>What happens when you select a Page depends on what the selector is being used for:</p> <ul> <li>If you choose <b>Jump to Page…</b> from the Menu Bar, selecting a Page will navigate to that Page, just like clicking it in the Sidebar</li> <li>If you choose <b>Add to Canvas…</b> from the Menu Bar, selecting a Page will add it to the current Canvas</li> <li>And if you are creating a link, selecting a Page will create a link to that Page</li> </ul> </section> <section class="left"> <div> <h3>Search</h3> <p>Finally, we have search. As your document grows, you may need some help in finding information in your document. The search field in the toolbar allows you to search for some text in every Canvas and Page in your document. As you type in some search text, the sidebar will change to show the results of that search. You can even drag Pages from your search results onto a Canvas.</p> </div> <figure> <img src="images/blog/exploring_coppice/search-results.jpg" alt="A standard mac sidebar showing the results for the search term 'request'. At the top it says 'Matches for 'request''. Below it lists canvases and pages that match, showing titles and content. The canvas row states it has 2 matching pages. The three matching pages highlight the matching term in their title or content" style="width: 261.5px"> </figure> </section> <hr/> <p>Hopefully this has given you a more detailed overview of Coppice's UI, and some of the features and functionality that will soon let you cultivate your thoughts.</p> <p>Be sure to subscribe to this blog and follow <a href="https://twitter.com/mcubedsw">@mcubedsw</a> on Twitter to be notified of future updates. Next week we will be looking at what motivated us to create Coppice in the first place.</p> <p>Last week we launched the Coppice website, where you can learn what Coppice is and the concepts behind it. This week we want to delve deeper into the actual app and show you what these concepts look like in practice. So let's take a tour through Coppice's interface.</p> tag:coppiceapp.com,2020-08-04:/welcome_to_the_coppice_blog Welcome to the Coppice Blog 2020-08-04T14:00:00+00:00 2020-08-04T14:00:00+00:00 <p>Welcome to the Coppice Blog, the best place to get all the latest news on Coppice, as well as tips on how to get the most out of Coppice and sneak peeks into future versions. Coppice is a great new app for the Mac that allows you to organise and make sense of your thoughts. You can find out more about Coppice from the <a href="features">Features</a> and <a href="faq">FAQ</a> pages of this site.</p> <p>We're still putting the final touches to Coppice, but we're hoping to share a lot about it over the coming weeks and months before release, including an in-depth look at how Coppice works, what prompted us to create Coppice, and even a look at our plans beyond the initial release.</p> <p>If you want to stay up to date you can subscribe to this blog in your favourite RSS reader using the link in the sidebar. You can also follow us on Twitter at <a href="https://twitter.com/mcubedsw">@mcubedsw</a>.</p> <p>We can't wait to share Coppice with you.</p> <p>Welcome to the Coppice Blog, the best place to get all the latest news on Coppice, as well as tips on how to get the most out of Coppice and sneak peeks into future versions. Coppice is a great new app for the Mac that allows you to organise and make sense of your thoughts. You can find out more about Coppice from the <a href="features">Features</a> and <a href="faq">FAQ</a> pages of this site.</p>