Skip to content

First release

Pre-release
Pre-release

Choose a tag to compare

@mudream4869 mudream4869 released this 16 May 02:33
· 688 commits to main since this release
99e9624

PlainShelf v0.1.0

PlainShelf v0.1.0 is the first early-development release of PlainShelf, a local-first personal reading library for plain text books.

PlainShelf is designed for single-user local usage, with a filesystem-first data model and a web-based reading interface. This release focuses on the core server/web workflow: importing TXT books, browsing and organizing a local library, reading books in the browser, tracking reading progress, and running the app locally or through Docker.

Status: pre-alpha / early development.
APIs, data layout, and UI behavior may still change in future releases.

Highlights

  • Local-first personal TXT library for single-user reading workflows.
  • Web UI for browsing, importing, organizing, editing, and reading books.
  • Filesystem-first shelf layout intended to keep user-owned data local and backup-friendly.
  • Stable internal book IDs independent from display titles.
  • Reading progress and recent reading history support.
  • Layer-based organization for grouping books.
  • Duplicate-content maintenance view based on current snapshot hashes.
  • Snapshot viewing/editing and split configuration support.
  • Cover upload, retrieval, conversion, and deletion support.
  • Docker image support with a built-in health check.

What is included

Library and reader workflow

  • Import TXT files into a local shelf.
  • Re-encode uploaded text content to UTF-8 during import.
  • Automatically create an initial snapshot for imported books.
  • Detect book language during import when possible.
  • Browse the local book library through the web UI.
  • View, edit, and delete book metadata.
  • Read book content in the browser reader.
  • Save and restore reading position.

Organization and maintenance

  • Organize books into layer paths.
  • Create and delete layers.
  • Move books between layers.
  • Search books by title/comment.
  • Find duplicate books by grouping matching current snapshot MD5 hashes.
  • View books missing common metadata such as author, cover, and language.
  • View and clear recent reading history.

Snapshots and content editing

  • List book snapshots.
  • View snapshot content.
  • Edit snapshot content.
  • Configure reader split behavior for the current snapshot.

Covers

  • Get, upload, and delete book covers.
  • Convert uploaded cover images to JPEG when configured.

Docker

  • Multi-stage Docker build for the frontend and Go server.
  • Runtime image includes a /health health check.
  • Default Docker config stores data under /data.
  • Recommended local run command:
docker run --rm \
  --name plainshelf \
  -p 127.0.0.1:20000:20000 \
  -v plainshelf-data:/data \
  plainshelf

Development and testing

Recommended local verification flow:

npm --prefix frontend run build
go test ./...

The frontend build must run before the Go build/test flow because the Go frontend package embeds the generated frontend dist files.

Known limitations

  • This is still a pre-alpha / early-development release.
  • APIs, data layout, and UI behavior may change in later versions.
  • PlainShelf is currently TXT-focused. EPUB, PDF, CBZ/CBR, DRM formats, OCR, cloud sync, multi-user support, public sharing links, and plugins are not in the current scope.
  • Server-side pagination is not implemented yet; the current API returns the full book list and the frontend paginates client-side.
  • The CLI and Fyne GUI entrypoints are experimental and may lag behind the main server/web workflow.
  • Some internal packages and commands still use the older txtlib name and may be renamed as the project stabilizes.

Upgrade notes

This is the first 0.1.0 release. There are no previous stable PlainShelf releases to migrate from.

Because PlainShelf is still pre-alpha, users should back up their shelf directory before upgrading to future releases.