oddmu-releases(7)

Name

oddmu-releases - what's new?

Description

This page lists user-visible features and template changes to consider.

1.15 (unreleased)

No user visible changes.

1.14 (2024)

Add *list*, *delete* and *rename* actions.

This requires a change to your web server setup if you are using a it as a reverse proxy because you need to pass these new actions along to Oddmu, together with appropriate permission checks.

See oddmu-apache(5) or oddmu-nginx(5) for example.

oddmu-apache(5)

oddmu-nginx(5)

In addition to that, you might want a link to the *list* action from one of the existing templates. For example, from upload.html:

<p>You can rename and delete files <a href="/list/{{.Dir}}">from the file list</a>.

The following line was added to the "preview.html" and "edit.html" template:

<base href="/view/{{.Dir}}">

You might want to do that as well, if you have your own. Without this, links in the preview cannot be followed as they all point to **/preview** instead of **/view** and the link to the list of changes cannot be followed from the edit page: it leads to editing the list of changes.

1.13 (2024)

Add *export* subcommand.

1.12 (2024)

Add *hashtags*, *links* and *toc* subcommands.

Support searching for multiple words using all sorts of quotation marks. That means that it is now impossible to search for words that begin with such a quotation mark.

These are the quotation marks currently supported: 'foo' "foo" ‘foo’ ‚foo‘ ’foo’ “foo” „foo“ ”foo” «foo» »foo« ‹foo› ›foo‹ 「foo」 「foo」 『foo』 – any such quoted text is searched as-is, including whitespace.

Add loading="lazy" for images in search.html

If you want to take advantage of this, you'll need to adapt your "search.html" template accordingly. Use like this, for example:

{{range .Items}}
<article lang="{{.Language}}">
  <p><a class="result" href="/view/{{.Name}}">{{.Title}}</a>
    <span class="score">{{.Score}}</span></p>
  <blockquote>{{.Html}}</blockquote>
  {{range .Images}}
  <p class="image"><a href="/view/{{.Name}}"><img loading="lazy" src="/view/{{.Name}}"></a><br/>{{.Html}}
  {{end}}
</article>
{{end}}

1.11 (2024)

The HTML renderer option for smart fractions support was removed. Therefore, 1/8 no longer turns into ⅛ or ¹⁄₈. The benefit is that something like "doi: 10.1017/9781009157926.007" doesn't turn into "doi: 10.1017⁄9781009157926.007". If you need to change this, take a look at the *wikiRenderer* function.

When search terms (excluding hashtags) match the alt text given for an image, that image is part of the data available to the search template.

If you want to take advantage of this, you'll need to adapt your "search.html" template accordingly. Use like this, for example:

{{range .Items}}
<article lang="{{.Language}}">
  <p><a class="result" href="/view/{{.Name}}">{{.Title}}</a>
    <span class="score">{{.Score}}</span></p>
  <blockquote>{{.Html}}</blockquote>
  {{range .Images}}
  <p class="image"><a href="/view/{{.Name}}"><img class="last" src="/view/{{.Name}}"></a><br/>{{.Html}}
  {{end}}
</article>
{{end}}

1.10 (2024)

You can now preview edits instead of saving them.

If you want to take advantage of this, you'll need to adapt your templates accordingly. The "preview.html" template is a mix of "view.html" and "edit.html".

There is an optional change to make to copies of *upload.html* if you upload multiple images at a time. Instead of showing just the link to the last upload, you can now show the link (and the images or links, if you want to) to all the files uploaded. Use like this, for example:

Links:<tt>{{range .Actual}}<br>![]({{.}}){{end}}</tt>

1.9 (2024)

There is a change to make to copies of *upload.html* if subdirectories are being used. The *Last* property no longer contains the directory. It has to be added to the template as follows:

{{if ne .Last ""}}
<p>Previous upload: <a href="/view/{{.Dir}}{{.Last}}">{{.Last}}</a></p>
{{if .Image}}
<p><img class="last" src="/view/{{.Dir}}{{.Last}}"></p>
{{end}}
{{end}}

You can use the *Last* property without a directory to suggest the markup to use, for example:

<p>Use the following for <a href="/view/{{.Dir}}{{.Today}}">{{.Today}}</a>:
<pre>![]({{.Last}})</a></pre>

The upload template can use the *Today* property.

The upload template comes with JavaScript that allows users to paste images or drag and drop files.

The upload template changed the id for the filename field from `text` to `name`.

The source repository now comes with example templates.

1.8 (2024)

No user-visible changes. Documentation and code comments got better.

1.7 (2024)

Allow upload of multiple files. This requires an update to the *upload.html* template: Add the *multiple* attribute to the file input element and change the label from "file" to "files".

Fix orientation of uploaded images. JPG and HEIC images have EXIF data telling a viewer how to orient the image. Oddmu now uses this information to rotate the image correctly before stripping it.

The version command now displays much less information unless given the -full argument.

1.6 (2024)

Add *archive* action to serve a zip file.

1.5 (2024)

Filtering separate sites in subdirectories via the ODDMU_FILTER environment variable in order to exclude them from the *search* action.

Add *version* subcommand.

Add filesystem watchers to automatically reindex changed pages and reload changed templates.

When rendering a page, use templates in the same directory, if available.

Delete uploaded files by uploading a file with zero bytes.

1.4 (2024)

If stdin is a Unix-domain socket, use that to serve the site. Otherwise, allow specifying a listen address via the ODDMU_ADDRESS environment variable.

1.3 (2024)

Add support for resizing HEIC images (and saving them as JPG files).

1.2 (2023)

Add *list* subcommand.

1.1 (2023)

Rewrote most of the README into man pages.

Add fediverse account rendering if ODDMU_WEBFINGER is set.

Add notifications when saving files: adding links to *index*, *changes* and *hashtag* pages.

Add *replace* subcommand. Add *missing* subcommand. Add *notify* command. Add *static* command.

Add *diff* action.

Add feed generation based on the local links from a page.

Add caching support by considering the If-Modified-Since header in requests and providing a Last-Modified header in responses.

Handle HEAD requests.

Remove HTML sanitization.

Remove MathJax support from the wiki parser. The templates never included the necessary MathJax JavaScript anyway so the special handling of $ was just an annoyance.

Drop trigram index and just search all the files. This takes much less RAM and doesn't take too much time even with a few thousand pages.

Add "blog:true" and "blog:false" predicates to search.

Limit search to the current directory tree.

Do not overwrite fresh backups: there must be a 1h break before the backup is overwritten.

1.0 (2023)

Paginate search results and no longer sort search results by score.

0.9 (2023)

Add image resizing.

Add wiki links in double square brackets to the parser.

0.8 (2023)

Rename files to backups before saving.

Rename the *saveUpload* action to *drop*.

Add the *search* subcommand.

0.7 (2023)

Add *upload* and *saveUpload* action so that one can upload files.

Add *html* subcommand.

0.6 (2003)

Add *add* and *append* action so that one can add to an existing page. This is important for me as editing pages on the phone can be cumbersome but leaving comments on my own site has always been easy to do.

Serve all existing files, not just text files.

Save an empty page to delete it.

Changed default permissions from 600 to 644 for files and from 700 to 755 for directories.

Make language detection configurable using an environment variable.

0.5 (2023)

Add hyphenation to templates using Peter M. Stahl's Lingua library.

0.4 (2023)

Create subdirectories as necessary.

0.3 (2023)

Add *search* action using Damian Gryski's trigram indexing, with scoring, highlighting and snippet extraction.

0.2 (2023)

Switch to Krzysztof Kowalczyk's Go Markdown fork of Blackfriday to render Markdown. Use Dee's Bluemonday to sanitize HTML.

Switch to GNU Affero GPL 3 license.

Serve text files (.txt).

Support serving on any port via the environment variable ODDMU_PORT.

0.1 (2015)

A web server that allows editing files in Wiki Creole Matt Self's Cajun library. Supported actions are *edit*, *save*, and *view*.

See also

oddmu(1)

Authors

Maintained by Alex Schroeder alex@gnu.org.

alex@gnu.org