getlektor.com_atom.xml - sfeed_tests - sfeed tests and RSS and Atom files
 (HTM) git clone git://git.codemadness.org/sfeed_tests
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       getlektor.com_atom.xml (37800B)
       ---
            1 <?xml version="1.0" encoding="utf-8"?>
            2 <feed xmlns="http://www.w3.org/2005/Atom">
            3   <title type="text">The Transcript</title>
            4   <id>urn:uuid:68a046f3-78ea-3cf1-8a20-d5e5861256f3</id>
            5   <updated>2020-08-20T00:00:00Z</updated>
            6   <link href="https://www.getlektor.com/blog/" />
            7   <link href="https://www.getlektor.com/blog/feed.xml" rel="self" />
            8   <author>
            9     <name></name>
           10   </author>
           11   <subtitle type="text">Lektor's blog</subtitle>
           12   <generator uri="https://github.com/ajdavis/lektor-atom" version="0.3.1">Lektor Atom Plugin</generator>
           13   <entry xml:base="https://www.getlektor.com/blog/2020/8/lektor-32-released/">
           14     <title type="text">Lektor 3.2 Released</title>
           15     <id>urn:uuid:5837dc8f-8400-3c64-89b6-40311cdf9085</id>
           16     <updated>2020-08-20T00:00:00Z</updated>
           17     <link href="https://www.getlektor.com/blog/2020/8/lektor-32-released/" />
           18     <author>
           19       <name>Andreas Runfalk</name>
           20     </author>
           21     <content type="html">
           22 &lt;div class=&quot;page-banner page-banner-500&quot; style=&quot;background-image: url(/blog/2020/8/lektor-32-released/coffee-ground-1171092-1599x1066.jpg)&quot;&gt;&lt;/div&gt;
           23 
           24 &lt;div class=&quot;text-block text-block-default&quot;&gt;
           25   &lt;p&gt;It's been a long time in the making, and on behalf of the Lektor Team I'm happy to introduce the 3.2 release of Lektor. As some of you may have noticed the development pace of Lektor has slowed down over the past two years. Those of you who have had open PRs for a long time, sorry for the delay and we'll try to do better going forward!&lt;/p&gt;
           26 &lt;p&gt;Recently we've made a big push to bring the project back on its feet. Our focus besides merging PRs and fixing various issues has been to streamline the CI and release process. The biggest change was the &lt;a href=&quot;https://github.com/lektor/lektor/pull/734&quot;&gt;switch from Travis and Appveyor to GitHub actions&lt;/a&gt; which should make the release process a lot easier going forward.&lt;/p&gt;
           27 &lt;p&gt;We have also promoted &lt;a href=&quot;https://github.com/lektor/lektor-tags&quot;&gt;lektor-tags&lt;/a&gt; and &lt;a href=&quot;https://github.com/lektor/lektor-atom&quot;&gt;lektor-atom&lt;/a&gt; to official plugins. This represents our commitment to keep them up to date. We have also deployed a &lt;a href=&quot;https://github.com/lektor/lektor-atom/pull/28&quot;&gt;new CI workflow&lt;/a&gt; that can publish new versions using tags. This will be something all plugin authors can use in their own projects. Thank you &lt;a href=&quot;https://github.com/goanpeca&quot;&gt;Gonzalo Peña-Castellanos&lt;/a&gt; for spearheading the CI improvements.&lt;/p&gt;
           28 &lt;p&gt;A big shoutout to all the contributors who help make Lektor awesome!&lt;/p&gt;
           29 &lt;div class=&quot;admonition admonition-info&quot;&gt;&lt;p&gt;Since Python 2 is EOL and its &lt;a href=&quot;https://blog.python.org/2020/04/python-2718-last-release-of-python-2.html&quot;&gt;final release ever&lt;/a&gt; happened on April 20th, 2020, this will be the last Lektor release with Python 2 support. This is also the last release supporting Python 3.5 since it is &lt;a href=&quot;https://devguide.python.org/#status-of-python-branches&quot;&gt;very near EOL&lt;/a&gt; and we want to have opportunity to work with several benefits of Python 3.6 going forward.&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;admonition admonition-warning&quot;&gt;&lt;p&gt;The slugify change may mean that your URLs will change when you update to Lektor 3.2. This could lead to broken links from external sites such as search engines. This can be fixed by providing a custom slug for the necessary pages.&lt;/p&gt;&lt;/div&gt;&lt;h1 id=&quot;changelog&quot;&gt;Changelog&lt;/h1&gt;&lt;h2 id=&quot;bugfixes&quot;&gt;Bugfixes&lt;/h2&gt;&lt;ul&gt;
           30 &lt;li&gt;Fix to correctly calculate relative urls from slugs that contain dots. (thank you &lt;a href=&quot;https://github.com/f-seven&quot;&gt;f-seven&lt;/a&gt;)&lt;/li&gt;
           31 &lt;li&gt;Fix to allow negative integers in integer fields in the admin UI. (thank you &lt;a href=&quot;https://github.com/davidferguson&quot;&gt;David Ferguson&lt;/a&gt;)&lt;/li&gt;
           32 &lt;li&gt;Fix &lt;code&gt;lektor plugins reinstall&lt;/code&gt; triggered &lt;code&gt;on_setup_env&lt;/code&gt; instead of just reinstalling plugins. (thank you &lt;a href=&quot;https://github.com/germn&quot;&gt;Mikhail Gerasimov&lt;/a&gt;)&lt;/li&gt;
           33 &lt;li&gt;Fix failing dimensions detection for some JPEG thumbnails. (thank you &lt;a href=&quot;https://github.com/xlotlu&quot;&gt;Ionuț Ciocîrlan&lt;/a&gt;)&lt;/li&gt;
           34 &lt;li&gt;Fix mismatch between reported thumbnail size and on-disk image when both width &amp;amp; height are provided. (thank you &lt;a href=&quot;https://github.com/xlotlu&quot;&gt;Ionuț Ciocîrlan&lt;/a&gt;)&lt;/li&gt;
           35 &lt;li&gt;Return JPEG dimensions swapped when EXIF rotation is in effect. (thank you &lt;a href=&quot;https://github.com/xlotlu&quot;&gt;Ionuț Ciocîrlan&lt;/a&gt;)&lt;/li&gt;
           36 &lt;li&gt;Fix off-by-1px rounding discrepancy between reported thumbnail dimensions and actual dimensions. (thank you &lt;a href=&quot;https://github.com/xlotlu&quot;&gt;Ionuț Ciocîrlan&lt;/a&gt;)&lt;/li&gt;
           37 &lt;li&gt;Fix off-by-one error in pagination's iter_pages in the interpretation of the right_current argument, and adding an appropriate trailing &lt;code&gt;None&lt;/code&gt; for some uses. (thank you &lt;a href=&quot;https://github.com/dairiki&quot;&gt;Jeff Dairiki&lt;/a&gt;)&lt;/li&gt;
           38 &lt;/ul&gt;
           39 &lt;h2 id=&quot;new-features&quot;&gt;New features&lt;/h2&gt;&lt;ul&gt;
           40 &lt;li&gt;Added the ability to &lt;a href=&quot;/docs/templates/videoops/&quot;&gt;generate video thumbnails&lt;/a&gt; with ffmpeg. (thank you &lt;a href=&quot;https://github.com/runfalk&quot;&gt;Andreas Runfalk&lt;/a&gt;)&lt;/li&gt;
           41 &lt;/ul&gt;
           42 &lt;h2 id=&quot;improvements&quot;&gt;Improvements&lt;/h2&gt;&lt;ul&gt;
           43 &lt;li&gt;Added support for setting the output_path in the project file. (thank you &lt;a href=&quot;https://github.com/georgeyk&quot;&gt;George Kussumoto&lt;/a&gt;)&lt;/li&gt;
           44 &lt;li&gt;Added support for deleting and excluding files for the rsync deployment publisher. (thank you &lt;a href=&quot;https://github.com/m-lib&quot;&gt;m-lib&lt;/a&gt;)&lt;/li&gt;
           45 &lt;li&gt;Several modernization and performance improvements to the admin UI (thank you &lt;a href=&quot;https://github.com/yagebu&quot;&gt;Jakob Schnitzer&lt;/a&gt;)&lt;/li&gt;
           46 &lt;li&gt;Improved speed of source info updates. (thank you &lt;a href=&quot;https://github.com/dairiki&quot;&gt;Jeff Dairiki&lt;/a&gt;)&lt;/li&gt;
           47 &lt;li&gt;Set colorspace to sRGB for thumbnails. This should result in significantly reduced thumbnail file size when the source image uses a more exotic colorspace. (thank you &lt;a href=&quot;https://github.com/skorokithakis&quot;&gt;Stavros Korokithakis&lt;/a&gt;)&lt;/li&gt;
           48 &lt;li&gt;Now stripping profiles and comments from thumbnails, for even smaller file size. (thank you &lt;a href=&quot;https://github.com/skorokithakis&quot;&gt;Stavros Korokithakis&lt;/a&gt;)&lt;/li&gt;
           49 &lt;li&gt;Improved speed of flow rendering in the admin UI. (thank you &lt;a href=&quot;https://github.com/davidferguson&quot;&gt;David Ferguson&lt;/a&gt;)&lt;/li&gt;
           50 &lt;li&gt;Improved image-heavy build speeds by reducing the amount of data extracted from EXIFs. (thank you &lt;a href=&quot;https://github.com/tgpfeiffer&quot;&gt;Tobias Pfeiffer&lt;/a&gt;)&lt;/li&gt;
           51 &lt;li&gt;Added the ability to collapse flow elements in the admin UI. (thank you &lt;a href=&quot;https://github.com/jtraub91&quot;&gt;Jason Traub&lt;/a&gt;)&lt;/li&gt;
           52 &lt;li&gt;Now &lt;code&gt;extra_flags&lt;/code&gt; is passed to all plugin events. (thank you &lt;a href=&quot;https://github.com/nixjdm&quot;&gt;Joseph Nix&lt;/a&gt;)&lt;/li&gt;
           53 &lt;li&gt;Extra flags can now be passed to the &lt;code&gt;clean&lt;/code&gt; and &lt;code&gt;dev shell&lt;/code&gt; CLI commands. (thank you &lt;a href=&quot;https://github.com/nixjdm&quot;&gt;Joseph Nix&lt;/a&gt;)&lt;/li&gt;
           54 &lt;li&gt;Deprecate the &lt;code&gt;crop&lt;/code&gt; thumbnail argument in favor of the new &lt;code&gt;mode&lt;/code&gt; argument, which can be one of &lt;code&gt;fit&lt;/code&gt; (the default), &lt;code&gt;crop&lt;/code&gt;, or &lt;code&gt;stretch&lt;/code&gt;. (thank you &lt;a href=&quot;https://github.com/xlotlu&quot;&gt;Ionuț Ciocîrlan&lt;/a&gt;)&lt;/li&gt;
           55 &lt;li&gt;&lt;code&gt;upscale=False&lt;/code&gt; for thumbnails can now prevent up scaling. (thank you &lt;a href=&quot;https://github.com/xlotlu&quot;&gt;Ionuț Ciocîrlan&lt;/a&gt;)&lt;/li&gt;
           56 &lt;li&gt;Added a new CLI command &lt;code&gt;lektor dev new-theme&lt;/code&gt;. (thank you &lt;a href=&quot;https://github.com/nixjdm&quot;&gt;Joseph Nix&lt;/a&gt;)&lt;/li&gt;
           57 &lt;li&gt;Made admin use full UTF-8 version of RobotoSlab. Fixes missing glyphs for some languages (thank you &lt;a href=&quot;https://github.com/yagebu&quot;&gt;Jakob Schnitzer&lt;/a&gt;)&lt;/li&gt;
           58 &lt;li&gt;Bumped minimum Jinja2 version to 2.11 (thank you &lt;a href=&quot;https://github.com/nixjdm&quot;&gt;Joseph Nix&lt;/a&gt;)&lt;/li&gt;
           59 &lt;li&gt;Bumped filetype dependency to 1.0.7 because of API changes (thank you &lt;a href=&quot;https://github.com/xlotlu&quot;&gt;Ionuț Ciocîrlan&lt;/a&gt;)&lt;/li&gt;
           60 &lt;li&gt;Relative urls are now as short as possible. (thank you &lt;a href=&quot;https://github.com/relikd&quot;&gt;Oleg Geier&lt;/a&gt; and &lt;a href=&quot;https://github.com/xlotlu&quot;&gt;Ionuț Ciocîrlan&lt;/a&gt;)&lt;/li&gt;
           61 &lt;li&gt;Automatically include setup.cfg configured for universal wheels when creating plugins (thank you &lt;a href=&quot;https://github.com/georgeyk&quot;&gt;George Kussumoto&lt;/a&gt;)&lt;/li&gt;
           62 &lt;li&gt;Changed default slug creation to use &lt;a href=&quot;https://github.com/un33k/python-slugify&quot;&gt;python-slugify&lt;/a&gt;. This should mean greater language support, but this may produce slightly different results than before for some users (thank you &lt;a href=&quot;https://github.com/nixjdm&quot;&gt;Joseph Nix&lt;/a&gt; and &lt;a href=&quot;https://github.com/xlotlu&quot;&gt;Ionuț Ciocîrlan&lt;/a&gt;)&lt;/li&gt;
           63 &lt;/ul&gt;
           64 
           65 &lt;/div&gt;</content>
           66   </entry>
           67   <entry xml:base="https://www.getlektor.com/blog/2018/5/plugin-play/">
           68     <title type="text">Plugin Play</title>
           69     <id>urn:uuid:183ff07b-516c-34eb-a0a3-885ac82eca81</id>
           70     <updated>2018-05-15T00:00:00Z</updated>
           71     <link href="https://www.getlektor.com/blog/2018/5/plugin-play/" />
           72     <author>
           73       <name>Joseph Nix</name>
           74     </author>
           75     <content type="html">
           76 &lt;div class=&quot;page-banner page-banner-300&quot; style=&quot;background-image: url(/blog/2018/5/plugin-play/spices.jpg)&quot;&gt;&lt;/div&gt;
           77 
           78 &lt;div class=&quot;text-block text-block-default&quot;&gt;
           79   &lt;h2 id=&quot;get-lektor-updates&quot;&gt;Get Lektor Updates&lt;/h2&gt;&lt;p&gt;This site just updated the way it lists available plugins! Now &lt;a href=&quot;https://www.getlektor.com/plugins/&quot;&gt;https://www.getlektor.com/plugins/&lt;/a&gt; gives you a list of all known Lektor plugins in a much more interactive and informative way. This will hopefully make it much easier for you to discover plugins that are relevant to your project and your needs. If you are a plugin developer, this should also help you find examples from existing plugins to help you learn how to interact better with Lektor's plugin system.&lt;/p&gt;
           80 &lt;h3 id=&quot;categories&quot;&gt;Categories&lt;/h3&gt;&lt;p&gt;Each plugin now falls within one of a few broad categories to help quickly narrow your search for what you're looking for.&lt;/p&gt;
           81 &lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;&lt;p&gt;Each plugin also now has its own dedicated page. On this page you can see the entire README for a plugin, in beautiful rendered Markdown or reStructuredText, GitHub statistics, authorship information, and tags. This page should give you all the information you need to be able to use the plugin, or to decide if it's what you're looking for as a guide to building your own.&lt;/p&gt;
           82 &lt;h3 id=&quot;tags&quot;&gt;Tags&lt;/h3&gt;&lt;p&gt;Plugins are tagged with specific key words or phrases that describe what they are used for and how they work. All of a plugin's tags are listed on its page as a link. Each tag has its own page where you can see other plugins that share that tag. This offers a powerful way to navigate between related content, and another way to discover more plugins.&lt;/p&gt;
           83 &lt;p&gt;I think this is especially useful for plugin development when the tag is an event that the plugin hooks. This allows you to quickly find the source code of plugins that depend on the same Lektor plugin events, so that you can see many quick examples to help you write your own plugin. For instance, you can find all of the plugins that hook the &lt;code&gt;before-build-all&lt;/code&gt; event by looking at it's tag page &lt;a href=&quot;/plugins/tag/before-build-all/&quot;&gt;here&lt;/a&gt;. Tag pages for events also have links back to the plugin documentation pages, including the page for that specific event.&lt;/p&gt;
           84 &lt;p&gt;Now go check out some &lt;a href=&quot;/plugins&quot;&gt;plugins&lt;/a&gt;!&lt;/p&gt;
           85 
           86 &lt;/div&gt;</content>
           87   </entry>
           88   <entry xml:base="https://www.getlektor.com/blog/2018/1/lektor-31-released/">
           89     <title type="text">Lektor 3.1 Released</title>
           90     <id>urn:uuid:5baefef3-bee6-346b-8220-0a94a203e7a0</id>
           91     <updated>2018-01-29T00:00:00Z</updated>
           92     <link href="https://www.getlektor.com/blog/2018/1/lektor-31-released/" />
           93     <author>
           94       <name>Joseph Nix</name>
           95     </author>
           96     <content type="html">
           97 &lt;div class=&quot;page-banner page-banner-500-tall&quot; style=&quot;background-image: url(/blog/2018/1/lektor-31-released/pancakes-2020863.jpg)&quot;&gt;&lt;/div&gt;
           98 
           99 &lt;div class=&quot;text-block text-block-default&quot;&gt;
          100   &lt;p&gt;Lektor continues to be discovered and used by more people, and many of these fine people have given back. Lektor is now a little easier to use, and more robust with plenty of bugfixes and added support for Python 3. Let's take a brief look at what's been done, and what we want next.&lt;/p&gt;
          101 &lt;h2 id=&quot;lektor-themes&quot;&gt;Lektor Themes&lt;/h2&gt;&lt;p&gt;Perhaps the most eye-catching change is the introduction of the ability for Lektor to use &lt;a href=&quot;/docs/themes/&quot;&gt;themes&lt;/a&gt;. This can become a very powerful tool, allowing people to make beautiful sites even more quickly by standing on the shoulders of those who have gone before them. Why spend more time fiddling with your CSS, or template queries than you need to? If there's a theme that's similar to yours in either design or function, you can start from there. Assets, templates, models, and flowblocks are all able to be themed, offering a lot of flexibility in what they could provide.&lt;/p&gt;
          102 &lt;p&gt;This is a very new and experimental feature. We'd love to add more support for themes so that making them and using them is easy, but it may be a bit rough around the edges at the moment. The &lt;a href=&quot;https://github.com/rlaverde&quot;&gt;contributor&lt;/a&gt; who gave Lektor its initial theming ability also created the &lt;a href=&quot;https://github.com/rlaverde/lektor-theme-nix&quot;&gt;first theme&lt;/a&gt;, which is a simple theme based on the &lt;a href=&quot;https://themes.gohugo.io/hugo-theme-nix/&quot;&gt;Nix Hugo theme&lt;/a&gt;.&lt;/p&gt;
          103 &lt;p&gt;I think this feature has a lot of potential. It's pretty exciting.&lt;/p&gt;
          104 &lt;h2 id=&quot;improved-support-and-testing&quot;&gt;Improved Support and Testing&lt;/h2&gt;&lt;p&gt;If you take a look at the changelog since version 2.0, you'll notice many references to bugfixes and dependency updates. We now support Python 3, and have a more extensive automated testing environment. We have upgraded the versions of Mistune (our current Markdown parser), and several JavaScript dependencies that drive the admin interface. Windows users have a few bugfixes to help them out, and added automated testing to catch more bugs before they reach a release.&lt;/p&gt;
          105 &lt;h2 id=&quot;other-features&quot;&gt;Other Features&lt;/h2&gt;&lt;ul&gt;
          106 &lt;li&gt;Templates now have greater control of image quality and rotation.&lt;/li&gt;
          107 &lt;li&gt;Fixed and expanded handling of image EXIF data.&lt;/li&gt;
          108 &lt;li&gt;Improved date handling in the admin interface.&lt;/li&gt;
          109 &lt;li&gt;Added ability to publish from different file systems.&lt;/li&gt;
          110 &lt;li&gt;Fields can now be disabled for alternatives in the admin interface.&lt;/li&gt;
          111 &lt;li&gt;Another Plugin hook added between instantiating the Renderer and creating the Markdown Processor.&lt;/li&gt;
          112 &lt;li&gt;&lt;code&gt;lektor dev shell&lt;/code&gt; now uses IPython if it's installed.&lt;/li&gt;
          113 &lt;/ul&gt;
          114 &lt;h2 id=&quot;support-for-mac-installer-paused&quot;&gt;Support for Mac Installer Paused&lt;/h2&gt;&lt;p&gt;The code that was used to create the Mac installer for the Desktop App has &lt;a href=&quot;https://github.com/lektor/lektor/issues/420&quot;&gt;some problems&lt;/a&gt;. We're (hopefully temporarily) pulling support for the desktop app because of this. If you have modern experience making executables (especially cross-platform) and would like to contribute, we'd love to have your support. We generally want to make Lektor as easy to use as possible, and a new desktop app could really help with that.&lt;/p&gt;
          115 &lt;h2 id=&quot;want-to-contribute&quot;&gt;Want to Contribute?&lt;/h2&gt;&lt;p&gt;Open Source Software lives and dies by the communities that use them, love them, and support them. If you're a developer looking to get your feet wet in OSS, we'd love to review your pull request. &amp;lt;3&lt;/p&gt;
          116 &lt;p&gt;A larger task, if you're someone with React (and Python) knowledge, is our admin interface. It has served us pretty well so far, but it also has &lt;a href=&quot;https://github.com/lektor/lektor/issues/458&quot;&gt;some issues&lt;/a&gt;. It could use some TLC.&lt;/p&gt;
          117 
          118 &lt;/div&gt;</content>
          119   </entry>
          120   <entry xml:base="https://www.getlektor.com/blog/2016/4/lektor-2-released/">
          121     <title type="text">Lektor 2.0 Released</title>
          122     <id>urn:uuid:6c255b6a-8b9f-379e-9100-619144ab30d8</id>
          123     <updated>2016-04-11T00:00:00Z</updated>
          124     <link href="https://www.getlektor.com/blog/2016/4/lektor-2-released/" />
          125     <author>
          126       <name>Armin Ronacher</name>
          127     </author>
          128     <content type="html">
          129 &lt;div class=&quot;page-banner page-banner-500&quot; style=&quot;background-image: url(/blog/2016/4/lektor-2-released/banner.jpg)&quot;&gt;&lt;/div&gt;
          130 
          131 &lt;div class=&quot;text-block text-block-default&quot;&gt;
          132   &lt;p&gt;After quite a bit of wait, I'm happy to announce the 2.0 release of Lektor.
          133 Some things that previously were supposed to go into this release were pushed
          134 out a bit more because the wait just was too long and quite a few features
          135 were already in this release.&lt;/p&gt;
          136 &lt;p&gt;Here is the changelog of what's in this release:&lt;/p&gt;
          137 &lt;ul&gt;
          138 &lt;li&gt;Added &lt;code&gt;_discoverable&lt;/code&gt; system field which controls if a page should show
          139 up in &lt;code&gt;children&lt;/code&gt;.  The default is that a page is discoverable.  Setting it
          140 to &lt;code&gt;False&lt;/code&gt; means in practical terms that someone needs to know the URL as
          141 all collection operations will not return it.&lt;/li&gt;
          142 &lt;li&gt;Added &lt;code&gt;for_page&lt;/code&gt; function to pagination that returns the pagiantion for a
          143 specific page.&lt;/li&gt;
          144 &lt;li&gt;Make pagination next_page and prev_page be None on the edges.&lt;/li&gt;
          145 &lt;li&gt;Allow plugins to provide publishers.&lt;/li&gt;
          146 &lt;li&gt;Added &lt;code&gt;|markdown&lt;/code&gt; filter.&lt;/li&gt;
          147 &lt;li&gt;Added French translations.&lt;/li&gt;
          148 &lt;li&gt;Unicode filenames as final build artifacts are now explicitly disallowed.&lt;/li&gt;
          149 &lt;li&gt;Serve up a 404.html as an error page in the dev server.&lt;/li&gt;
          150 &lt;li&gt;Improvements to the path normalization and alt handling.  This should support
          151 URL generation in more complex cases between alts now.&lt;/li&gt;
          152 &lt;li&gt;Show a clearer error message when URL generation fails because a source
          153 object is virtual (does not have a path).&lt;/li&gt;
          154 &lt;li&gt;Empty text is now still valid markdown.&lt;/li&gt;
          155 &lt;li&gt;Lektor clean now loads the plugins as well.&lt;/li&gt;
          156 &lt;li&gt;Basic support for type customization.&lt;/li&gt;
          157 &lt;li&gt;Fields that are absent in a content file from an alternative are now pulled
          158 from the primary content file.&lt;/li&gt;
          159 &lt;li&gt;Development server now resolves index.html for assets as well.&lt;/li&gt;
          160 &lt;li&gt;Markdown processing now correctly adjusts links relative to where the
          161 rendered output is rendered.&lt;/li&gt;
          162 &lt;li&gt;Added Dutch translations.&lt;/li&gt;
          163 &lt;li&gt;Added Record.get_siblings()&lt;/li&gt;
          164 &lt;li&gt;Added various utilties: build_url, join_path, parse_path&lt;/li&gt;
          165 &lt;li&gt;Added support for virtual paths and made pagination work with it.&lt;/li&gt;
          166 &lt;li&gt;Added support for Query.distinct&lt;/li&gt;
          167 &lt;li&gt;Add support for pagination url resolving on root URL.&lt;/li&gt;
          168 &lt;li&gt;Server information can now also contain extra key/value pairs that
          169 can be used by publishers to affect the processing.&lt;/li&gt;
          170 &lt;li&gt;The thumbnails will now always have the correct width and height set
          171 as an attribute.&lt;/li&gt;
          172 &lt;li&gt;added datetime type&lt;/li&gt;
          173 &lt;li&gt;added support for the process_image utility functions so that plugins
          174 can use it directly.&lt;/li&gt;
          175 &lt;li&gt;added support for included_assets and excluded_assets in the project file.&lt;/li&gt;
          176 &lt;li&gt;added Spanish translations.&lt;/li&gt;
          177 &lt;li&gt;added Japanese translations.&lt;/li&gt;
          178 &lt;li&gt;added support for discovering existing alts of sources.&lt;/li&gt;
          179 &lt;li&gt;added support for image cropping.&lt;/li&gt;
          180 &lt;li&gt;added preliminary support for publishing on windows.&lt;/li&gt;
          181 &lt;li&gt;children and attachments can now have a hidden flag configured explicitly.
          182 Attachments will also no longer inherit the hidden flag of the parent
          183 record as that is not a sensible default.&lt;/li&gt;
          184 &lt;li&gt;changed internal sqlite consistency mode to improve performance on HDDs.&lt;/li&gt;
          185 &lt;li&gt;allow SVG files to be treated as images.  This is something that does not
          186 work in all situations yet (in particular thumbnailing does not actually
          187 do anything for those)&lt;/li&gt;
          188 &lt;/ul&gt;
          189 &lt;p&gt;As always you can install the release as mentioned in the release notes.
          190 If you had a previous version of Lektor the install process should auto
          191 upgrade.  If you use the OS X desktop build, just drag the new application over
          192 the already existing one.&lt;/p&gt;
          193 
          194 &lt;/div&gt;</content>
          195   </entry>
          196   <entry xml:base="https://www.getlektor.com/blog/2016/3/lektor-at-rails-girls-summer-of-code/">
          197     <title type="text">Lektor at Rails Girls Summer of Code 2016</title>
          198     <id>urn:uuid:f5918d57-8c93-3bdf-bd2f-e4546646e819</id>
          199     <updated>2016-03-17T00:00:00Z</updated>
          200     <link href="https://www.getlektor.com/blog/2016/3/lektor-at-rails-girls-summer-of-code/" />
          201     <author>
          202       <name>Armin Ronacher</name>
          203     </author>
          204     <content type="html">
          205 &lt;div class=&quot;page-banner page-banner-500&quot; style=&quot;background-image: url(/blog/2016/3/lektor-at-rails-girls-summer-of-code/banner.jpg)&quot;&gt;&lt;/div&gt;
          206 
          207 &lt;div class=&quot;text-block text-block-default&quot;&gt;
          208   &lt;p&gt;I'm happy to announce that Lektor is participating as a project in this year's
          209 &lt;a href=&quot;http://railsgirlssummerofcode.org/&quot;&gt;Rails Girls Summer of Code&lt;/a&gt; (RGSOC).
          210 Unlike what the name would suggest, RGSOC is open for all Open Source projects
          211 and not just Ruby.&lt;/p&gt;
          212 &lt;p&gt;The goal of RGSOC is to bring more women into programming.  To quote the
          213 website:&lt;/p&gt;
          214 &lt;blockquote&gt;&lt;p&gt;Rails Girls Summer of Code is a global fellowship program aimed at bringing
          215 more diversity into Open Source. Successful applicants are paid a monthly
          216 stipend, from July-September, to work on Open Source projects of their
          217 choice.&lt;/p&gt;
          218 &lt;/blockquote&gt;
          219 &lt;p&gt;Lektor was accepted as a particpating project.  For more information about
          220 the project there refer to the &lt;a href=&quot;https://teams.railsgirlssummerofcode.org/projects/115-lektor-cms&quot;&gt;project overview on
          221 RGSOC&lt;/a&gt;.&lt;/p&gt;
          222 &lt;p&gt;We want to make it as easy as possible to work on Lektor during the event which
          223 is why we will be very flexible with regards to which area interested
          224 developers want to work on.&lt;/p&gt;
          225 &lt;p&gt;If you are interested in working on Lektor you can reach out to us via
          226 Twitter at &lt;a href=&quot;https://twitter.com/getlektor&quot;&gt;@getlektor&lt;/a&gt; or
          227 &lt;a href=&quot;https://gitter.im/lektor/lektor&quot;
          228 class=&quot;js-gitter-toggle-chat-button&quot;&gt;Gitter&lt;/a&gt;.&lt;/p&gt;
          229 
          230 &lt;/div&gt;</content>
          231   </entry>
          232   <entry xml:base="https://www.getlektor.com/blog/2016/3/road-to-lektor-2/">
          233     <title type="text">Road to Lektor 2.0</title>
          234     <id>urn:uuid:e29ee451-ec19-38f5-840d-67d5e5457913</id>
          235     <updated>2016-03-10T00:00:00Z</updated>
          236     <link href="https://www.getlektor.com/blog/2016/3/road-to-lektor-2/" />
          237     <author>
          238       <name>Armin Ronacher</name>
          239     </author>
          240     <content type="html">
          241 &lt;div class=&quot;page-banner page-banner-500&quot; style=&quot;background-image: url(/blog/2016/3/road-to-lektor-2/header.jpg)&quot;&gt;&lt;/div&gt;
          242 
          243 &lt;div class=&quot;text-block text-block-default&quot;&gt;
          244   &lt;p&gt;It's great to see what people have been building with Lektor so far. It also
          245 shows us what still needs to be built.  For a lot of things we improved for
          246 Lektor 2.0 which is going to release very soon indeed.  To give you some ideas
          247 what's going to change here is a current brief look into the changelog and
          248 what has been changed so far.&lt;/p&gt;
          249 &lt;h2 id=&quot;page-discovery&quot;&gt;Page Discovery&lt;/h2&gt;&lt;p&gt;One of the biggest frustrations users have voiced is the inability to control
          250 discoverability of pages.  In Lektor 1.0 you can only hide pages entirely in
          251 which case the build process skips over them but there was no way to hide them
          252 by default from queries.  While you could always hide pages by changing the
          253 query, this did not work for pagination and it also required you to be quite
          254 careful with the queries you are writing in templates.&lt;/p&gt;
          255 &lt;p&gt;In Lektor 2.0 we introduced the system &lt;code&gt;_discoverable&lt;/code&gt; attribute which allows
          256 you to easily hide pages from any query.  Queries can explicitly include
          257 undiscoverable pages but you do not need to take care of this yourself.  This
          258 makes it possible to automatically hide drafts from blogs for instance.  Lektor
          259 will still build it but without knowing the URL you cannot see it on the
          260 overview.&lt;/p&gt;
          261 &lt;h2 id=&quot;virtual-paths&quot;&gt;Virtual Paths&lt;/h2&gt;&lt;p&gt;The biggest change in Lektor 2.0 is the introduction of virtual paths and
          262 sources.  This is somewhat of an under the hood change but it has big
          263 implications on what is possible with Lektor plugins.  Each page can have
          264 virtual resources below it that can be provided by plugins.  These virtual
          265 resources are separated from the page through what is called a virtual path
          266 which is indicated by the at-sign (&lt;code&gt;@&lt;/code&gt;).  For instance this blog here uses
          267 a plugin which provides a blog archive available at &lt;code&gt;/blog@blog-archive&lt;/code&gt; and
          268 the year 2015 is available at &lt;code&gt;/blog@blog-archive/2015&lt;/code&gt; etc.&lt;/p&gt;
          269 &lt;h2 id=&quot;next/previous-page&quot;&gt;Next / Previous Page&lt;/h2&gt;&lt;p&gt;Lektor 2.0 implements sibling support through it's virtual path system which
          270 allows you to refer to the next or previous record easily.  This is for
          271 instance used by this blog here to link between blog posts.&lt;/p&gt;
          272 &lt;h2 id=&quot;improved-alternative-support&quot;&gt;Improved Alternative Support&lt;/h2&gt;&lt;p&gt;Alternatives were heavily improved.  Individual fields that are absent in
          273 content files now fall back to the primary content file.  In addition it is
          274 now possible to ask Lektor about which alternatives exist for a given source
          275 or in total.  This simplifies handling of internationalized pages greatly
          276 but more work will be done in that field.&lt;/p&gt;
          277 &lt;h2 id=&quot;improved-plugin-support&quot;&gt;Improved Plugin Support&lt;/h2&gt;&lt;p&gt;Plugins now have the ability to do a few more things they could not do before:&lt;/p&gt;
          278 &lt;ul&gt;
          279 &lt;li&gt;custom field types (want to render reStructuredText? You can now build a plugin)&lt;/li&gt;
          280 &lt;li&gt;custom build programs: because of the virtual source and path support you can
          281 now build custom build programs that build things that do not exist in the
          282 source tree.  For instance you can build feeds, blog archives etc.&lt;/li&gt;
          283 &lt;/ul&gt;
          284 
          285 &lt;/div&gt;</content>
          286   </entry>
          287   <entry xml:base="https://www.getlektor.com/blog/2015/12/travis-and-ghpages/">
          288     <title type="text">Lektor Loves Travis-CI and GitHub Pages</title>
          289     <id>urn:uuid:f5986ecc-af94-3569-b82b-3a4438ca5358</id>
          290     <updated>2015-12-23T00:00:00Z</updated>
          291     <link href="https://www.getlektor.com/blog/2015/12/travis-and-ghpages/" />
          292     <author>
          293       <name>Armin Ronacher</name>
          294     </author>
          295     <content type="html">
          296 &lt;div class=&quot;page-banner page-banner-500&quot; style=&quot;background-image: url(/blog/2015/12/travis-and-ghpages/header.jpg)&quot;&gt;&lt;/div&gt;
          297 
          298 &lt;div class=&quot;text-block text-block-default&quot;&gt;
          299   &lt;p&gt;Open Source projects need websites, that's a given, and one of the most popular
          300 ways to host them these days is &lt;a href=&quot;https://pages.github.com/&quot; class=&quot;ext&quot;&gt;GitHub Pages&lt;/a&gt;.
          301 It's a free service provided by &lt;a href=&quot;https://github.com/&quot; class=&quot;ext&quot;&gt;GitHub&lt;/a&gt; which allows
          302 hosts a git repository as a website on a subdomain of &lt;code&gt;github.io&lt;/code&gt;.&lt;/p&gt;
          303 &lt;p&gt;Wouldn't it be nice if you could easily host Lektor projects on there?  Turns
          304 out you can with the help of &lt;a href=&quot;https://travis-ci.org/&quot; class=&quot;ext&quot;&gt;Travis-CI&lt;/a&gt;.  Because
          305 Lektor has built-in support for deploying to GitHub Pages pairing up the three
          306 is a breeze.&lt;/p&gt;
          307 &lt;p&gt;We &lt;a href=&quot;../../../../docs/deployment/travisci/&quot; class=&quot;ref&quot;&gt;created a guide&lt;/a&gt; and also recorded
          308 a screencast that goes with it:&lt;/p&gt;
          309 &lt;iframe width=&quot;100%&quot; height=410 frameborder=&quot;0&quot; allowfullscreen=&quot;allowfullscreen&quot;
          310   src=&quot;https://www.youtube.com/embed/3pj_EyZIL5A?autoplay=0&amp;fs=1&quot;&gt;
          311 &lt;/iframe&gt;
          312 &lt;/div&gt;</content>
          313   </entry>
          314   <entry xml:base="https://www.getlektor.com/blog/2015/12/hello-lektor/">
          315     <title type="text">Hello Lektor!</title>
          316     <id>urn:uuid:61a91a00-268d-36e7-b014-9e733ff99ce4</id>
          317     <updated>2015-12-21T00:00:00Z</updated>
          318     <link href="https://www.getlektor.com/blog/2015/12/hello-lektor/" />
          319     <author>
          320       <name>Armin Ronacher</name>
          321     </author>
          322     <content type="html">
          323 &lt;div class=&quot;page-banner page-banner-500&quot; style=&quot;background-image: url(/blog/2015/12/hello-lektor/banner.jpg)&quot;&gt;&lt;/div&gt;
          324 
          325 &lt;div class=&quot;text-block text-block-default&quot;&gt;
          326   &lt;p&gt;About &lt;a href=&quot;http://w3techs.com/technologies/details/cm-wordpress/all/all&quot;&gt;25% of the Internet uses
          327 Wordpress&lt;/a&gt; and
          328 it's estimated that about 50% of Wordpress installations out there are
          329 vulnerable to security problems because they have not been updated.  This is a
          330 very high number.&lt;/p&gt;
          331 &lt;p&gt;Because I know how much work it can be to keep software updated and my own
          332 terrible track record of spending time of updating everything I'm running
          333 I kept getting increasingly frustrated with the lack of software that would
          334 allow me to run a simple website in a secure manner without having to resort
          335 to all kinds of user-unfriendly hackery.&lt;/p&gt;
          336 &lt;p&gt;While there are many static site generators none of them really matched what I
          337 actually wanted: a content management system that just happens to run
          338 on the client.  Most static website generators are too “hacker focused” in the
          339 sense that they could not be used by people without programming experiences or
          340 they are full fledged content management systems that need a server to run on
          341 or require regular maintenance for security updates.&lt;/p&gt;
          342 &lt;p&gt;There the hacker's favorite projects like
          343 &lt;a href=&quot;https://github.com/getpelican/pelican&quot;&gt;Pelican&lt;/a&gt; or
          344 &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt; which support generating websites out of static
          345 files that are tracked through version control and there are CMS systems like
          346 &lt;a href=&quot;http://statamic.com/&quot;&gt;Statamic&lt;/a&gt; which store all of its data in flat files
          347 — but as mentioned — needs PHP.&lt;/p&gt;
          348 &lt;p&gt;None of those were what I was looking for.  Static file generators like Jekyll
          349 are nice in a way but not just end user unfriendly, but also very limited in
          350 what you can do with them.  They are more suited for building blogs than
          351 more complex sites.  I tried a bunch of them and built different things
          352 with them, but ultimately always felt like something was missing.&lt;/p&gt;
          353 &lt;p&gt;After about two years of frustration with that situation I finally sat down
          354 and spend some time working on a system to solve this problem.  May I
          355 introduce: Lektor.&lt;/p&gt;
          356 &lt;h2 id=&quot;what-is-lektor&quot;&gt;What is Lektor?&lt;/h2&gt;&lt;p&gt;Lektor combines the experience of using a content management system like
          357 Wordpress with a static website generator like Jekyll and has some of the
          358 flexibility of a web development framework like Django.  It can run locally
          359 on your computer and deploy to remote servers.  All source assets are stored
          360 either in version control or Dropbox and when you are satisfied with the end
          361 results, you can push them online from the UI to a remote server.&lt;/p&gt;
          362 &lt;p&gt;And this is what it roughly looks like when you look at the admin panel:&lt;/p&gt;
          363 &lt;div class=&quot;screenshot-frame&quot;&gt;&lt;img src=&quot;admin.png&quot;&gt;&lt;/div&gt;&lt;h2 id=&quot;how-do-i-use-it&quot;&gt;How do I use it?&lt;/h2&gt;&lt;p&gt;That depends on who you are.  Lektor is based on the idea that there are
          364 two parties to a website: the web developers and the editors.  The former
          365 create the design, layout, data layout and configures Lektor in general.  The
          366 latter change the contents of the website according to the general setup.&lt;/p&gt;
          367 &lt;p&gt;If you are a web developer you can install two versions of Lektor: you can
          368 use the command line client or if you are on a Mac, you can install the
          369 desktop version.  Either version comes with a handy web interface that
          370 can be used to preview and edit all pages.&lt;/p&gt;
          371 &lt;p&gt;Once you have configured Lektor to your liking you can put the project into
          372 version control (or just Dropbox) and let your users modify the contents.  All
          373 they have to do is to install the Desktop version of Lektor, double click the
          374 project in their Dropbox and start changing it.&lt;/p&gt;
          375 &lt;p&gt;If you just want to edit the contents of a project you can install the
          376 Desktop version or maybe in the future use a cloud hosted version.&lt;/p&gt;
          377 &lt;h2 id=&quot;project-layout&quot;&gt;Project Layout&lt;/h2&gt;&lt;p&gt;To get an idea how it works, you can have a look at the &lt;a href=&quot;https://github.com/lektor/lektor-website/&quot;&gt;github repository of
          378 this website&lt;/a&gt; which contains the
          379 project for this website and blog and have a look at the introduction
          380 documentation: &lt;a href=&quot;../../../../docs/quickstart/&quot; class=&quot;ref&quot;&gt;Getting Started&lt;/a&gt;.  You can
          381 also find a screencast there.&lt;/p&gt;
          382 &lt;p&gt;On a very basic level Lektor takes &lt;code&gt;.lr&lt;/code&gt; files which are basic text files
          383 with a super simple format and generates out HTML files.  The &lt;code&gt;.lr&lt;/code&gt; files
          384 correspond to a previously set up data model.  They are pure text format for
          385 key/value pairs.  Each pair is separated by three dashes (&lt;code&gt;---&lt;/code&gt;):&lt;/p&gt;
          386 &lt;pre&gt;&lt;code&gt;field_1: value
          387 ---
          388 field_2:
          389 
          390 a longer value
          391 &lt;/code&gt;&lt;/pre&gt;
          392 &lt;p&gt;You can set up data models for simple things like blog posts but also more
          393 elaborate ones if you want to build portfolio sites.  For instance you could
          394 set up models for your projects and then access that data in the templates.&lt;/p&gt;
          395 &lt;p&gt;The content files are stored in folders in a tree like structure and at any
          396 level you can add other files as attachments:&lt;/p&gt;
          397 &lt;div class=&quot;screenshot-frame&quot;&gt;&lt;img src=&quot;structure.png&quot;&gt;&lt;/div&gt;&lt;h2 id=&quot;an-open-source-project&quot;&gt;An Open Source Project&lt;/h2&gt;&lt;p&gt;Lektor is available under &lt;a href=&quot;../../../../license/&quot;&gt;a BSD license&lt;/a&gt; and run as a
          398 community Open Source project &lt;a href=&quot;https://github.com/lektor/lektor/&quot; class=&quot;ext&quot;&gt;on github&lt;/a&gt;.
          399 The build system is written in Python, the UI in JavaScript with React and
          400 the GUI components use Electron.&lt;/p&gt;
          401 &lt;h2 id=&quot;feedback-appreciated&quot;&gt;Feedback Appreciated&lt;/h2&gt;&lt;p&gt;Lektor took two attempts to get into a usable application and I'm sure that
          402 there is more that needs to be done to scratch the needs of most users.
          403 However I also know that there is no point in delaying an initial release
          404 unnecessarily.  What's being released today is the application as it exists
          405 today and I think it's in a good shape to build really cool websites with
          406 it.  I welcome you to give it a try and give feedback on what you think
          407 about it.&lt;/p&gt;
          408 
          409 &lt;/div&gt;</content>
          410   </entry>
          411 </feed>