Releases: jalmena/tabernacle
Release list
v0.6.0
The chord page can be heard, and it has an opinion about how hard a shape is.
Hearing it. Draw a shape on the neck and press Hear it. Nylon, steel or an
electric through a distorted amplifier, chosen beside the neck. The notes are
worked out on the server, from the same code that validates the chord dataset,
and the browser only turns numbers into air — no audio files, and it works
offline like everything else.
How hard a shape is, in a word and a number: Trivial, Easy, Moderate,
Advanced, Complex, Extreme, Inhuman. The bands are anchored to chords a
guitarist already has an opinion about — Em7 and E7 at the bottom, the open
chords next, F and Bm after them, B a step past those.
Difficulty used to be the width of the hand, and width cannot tell a stretch
from a spread. Index on the first fret and little finger on the fourth is the
hand doing nothing unusual; index on the first and ring on the fourth is the
same three frets and a real stretch. Fingers are not equally independent either:
the ring and the little finger share a tendon, which is why an open G opens the
middle and ring fingers four strings apart and nobody minds.
That was also a bug. Scored by width, B major led with a contortion instead of
the barre everybody plays, and so did F#, C#, Ab and Eb. The chord page and the
song sheet disagreed about the same chord; they no longer do.
Fixes. The print preview of a single song was drawn on the songbook's grey
desk, where there is no white sheet to lay down; it is white again. A password
needs eight characters rather than ten. B, Db and Eb join the curated shapes.
Everything above is in all nineteen interface languages.
Images: ghcr.io/jalmena/tabernacle:0.6.0 for linux/amd64 and linux/arm64.
v0.5.0
Two things for the moment the guitar is actually in your hands.
Play mode. Press Play on a song sheet and the page becomes the words and
nothing else, at a size you can read from a stand, scrolling by itself at one of
eight speeds with the screen kept awake. Touching the page pauses it, so looking
ahead is not a fight with the scroll. Space starts and pauses, the arrows change
speed, Escape leaves.
Capo advice. A song full of barre chords is offered somewhere to clamp so it
is not. A song in F comes out capo 1 playing in E, capo 3 playing in D, capo 5
playing in C — the same sound, easier shapes. A fret is offered only when it
removes work, so a song already made of open chords says nothing at all. The
advice never changes the sheet.
Fixes. The print preview of a single song was drawn on the songbook's grey
desk, where there is no white sheet to lay down; it is white again. A password
now needs eight characters rather than ten, and the number is stated in one
place instead of by hand in nineteen translations.
Everything above is in all nineteen interface languages.
Images: ghcr.io/jalmena/tabernacle:0.5.0 for linux/amd64 and linux/arm64.
v0.4.0
Languages
The interface speaks nineteen languages, chosen per person under Settings → Personalisation:
Español · English · Català · Galego · Euskara · Português · Français · Italiano · Deutsch · Nederlands · Polski · Русский · Türkçe · Bahasa Indonesia · 中文 · 日本語 · 한국어 · हिन्दी · العربية
TABERNACLE_LANGsets the language for anybody who has not chosen one.- Arabic mirrors the layout. It does not mirror the neck or the song sheet: a chord grid is a picture of an instrument, and a chord sits above the letter it falls on, counted from the left.
- Translated all the way down — diagram captions, the description a screen reader speaks, the
.songparser's complaints, the import's reasons for refusing a file. Nothing speaks for the reader but the edge. - Note names remain a separate setting (
A B CorDo Re Mi): which names a musician uses does not follow from which language they speak.
A mark
- Tabernacle has an icon: a chord grid in the wordmark's own two tones.
- It is the favicon too, which the application never had.
Fixed
- PNG assets were served as a stream of bytes rather than as images.
See docs/languages.md. Japanese, Korean, Arabic, Hindi, Turkish, Polish and Russian are written carefully but would welcome a native musician's eye.
v0.3.0
A new Chords section: a fretboard editor for learning chords.
The editor
- An upright five-fret neck, sixth string on the left, editable with the mouse or the keyboard.
- Draw a shape and you are told what chord it is, with every honest reading — the same four notes are C6 or Am7 depending on which one is underneath.
- Leave a string ringing that does not belong and the chord is named anyway, along with what to stop.
- Name a chord and it is drawn, with every way of holding it, easiest first.
- Inversions get their own page rather than being mixed in.
- Works with no JavaScript; with it, nothing reloads and nothing touches the URL.
Songbook
- Titles centred.
- Two columns when a song does not fit one side of paper.
- No heading is ever separated from the lines it introduces.
- Printing opens in a new tab.
v0.2.1
v0.2.1
Fixed
- Signing in was refused as a foreign request. Firefox sends "Origin: null" on a
POST when the referrer policy is restrictive, which every response here is, so
the check called an ordinary form submission foreign. Sec-Fetch-Site is the
evidence now; a named origin still has to agree, port included. This had
refused every POST from such a browser since the check was written. - The songbook's print button did nothing: that view loaded no script.
- Page breaks between songs are set in both spellings, and the preview draws the
document as sheets so you can see where they fall.
Added
- The chords over the lyrics are links to their own diagrams.
- English, chosen per account, alongside the theme and the note names.
- Signing up, which an administrator can open; new accounts are always members.
- Notices can be dismissed, and no longer put ?msg= in the address bar.
- Salir sits beside Ajustes in the header.
Changed
- Settings are two groups: your account, and personalisation.
- Note names are a personal preference; TABERNACLE_NOTATION is what a visitor
without an account reads. - Accounts are a list with a page each, instead of a table you had to scroll
sideways to read. - The songbook is laid out as a tool: a list, then a format card, one width.
- Login, the editor, the delete confirmation and the settings pages carry no
library navigation. Editing controls are hidden from readers who cannot write. - Radios and checkboxes use the application's own colour.
v0.2.0
v0.2.0 — accounts and settings
Added
- Acceder in the header opens a login box; signed in it becomes Ajustes.
- A settings page: profile, password, theme, accounts, default notation. It
carries no library navigation. - Two roles. Everyone may edit songs; an administrator manages accounts.
- Generar cancionero: pick any set of songs and print them as one document, each
in the key you asked it to remember. - Import and export are reachable from the settings page instead of only by
typing /import. - A light or dark theme per account, following you between devices.
Accounts
- Reading stays public. Writing needs an account once the instance is claimed.
- An instance with no accounts behaves as before and says so, so an existing
collection upgrades without surprises. - Accounts live in data/accounts.json, not in the index. Back it up: it is the
one file there that cannot be rebuilt. - Claim it from the browser, or set TABERNACLE_ADMIN_USER and
TABERNACLE_ADMIN_PASSWORD. Setting them again resets that password. - PBKDF2 from the standard library. No new dependency.
- Sessions are signed cookies with no server-side table, so they survive both a
restart and deleting the index.
Docs
- docs/accounts.md: threat model, file format, recovery, and what is deliberately
absent. - The backup instructions now mention accounts.json.
v0.1.2
v0.1.2
Security
- A write was accepted from any other origin on the local network, because the
origin check ignored the port. It is now exact.
Fixed
- Chord captions contradicted their diagrams: G and D said "Traste 2" while
being drawn from the nut. Open position now means an open string with the hand
in the first four frets, a barre is named by its own fret, and the caption and
the drawing come from one decision. - A shape with no open strings is no longer called open position.
- An A-shape barre is drawn whole; the window starts at the hand, not the barre.
- A dead inline style in the library, dropped by the content security policy.
v0.1.1
v0.1.1
Removed
- The capo "Suena" view. A capo is information about a song, not a
transformation of it.
Fixed
- A sanitised filename could exceed its length limit by one byte.
- A lyric line of only whitespace was lost on save.
- A lone carriage return was lost on save; classic Mac line endings now parse.
- The chord appendix no longer substitutes a simpler chord's shape unasked.
- CI's "not running as root" check could never fail, and PUID/PGID was untested.
Docs
- README trimmed from 553 lines to 154, with badges and screenshots.
- The chord diagram document matches the lookup again.
v0.1.0
v0.1.0 — the first release
A self-hosted guitar songbook for one person's collection.
Plain .song text files are the collection. SQLite is only an index over them, and
deleting it costs nothing: the next start rebuilds it, and every address still
works, because a song's URL is derived from its path rather than from a row id.
What it does
Browse and search the collection, accent-insensitively and across the words as
well as the titles. Read a sheet with the chords sitting on the vowel of each
syllable, where the stress falls. Transpose it, tablature included, clamped
rather than wrapped at either end of the neck. Read the notes as C D E or as Do
Re Mi. See what the chords actually sound with a capo on. Look at chord
diagrams, with alternative positions for each shape. Simplify a whole sheet at
once when its chords are more than a hand can hold. Print it on A4 in one of
several light paper themes. Add a song by pasting it in, edit the file itself,
load one from disk, and move a collection in and out as a zip.
It works offline, keeps no analytics, phones nowhere, and needs no account.
Running it
Multi-architecture container images, amd64 and arm64, at
ghcr.io/jalmena/tabernacle. There is a compose file with CasaOS metadata, and
the application runs as an unprivileged user inside the image.
Not here yet
Users and roles, and with them the moderation queue for songs submitted by a
non-admin account. A settings page, which is where the English interface will
live — the interface is Spanish for now, though note names can already be read
either way.
Known rough edge
A syntax error in a .song file is reported with its line number, but the
message itself is in English inside a Spanish interface. It will be translated
along with the rest of the interface.