Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
182 commits
Select commit Hold shift + click to select a range
0dd48dc
First version of devops cli
codebude May 21, 2026
05b8a76
More tools for devops cli
codebude May 21, 2026
ca86ece
Add Docker build & publish workflow to GHCR
codebude May 21, 2026
7ae59c9
Github workflow - iteration 1
codebude May 21, 2026
be114b6
Github workflow - bumped action versions
codebude May 21, 2026
52d982c
Fix version presentation to be compliant with main and dev builds
codebude May 21, 2026
71112bd
Fixed language selctor on login page
codebude May 21, 2026
77c0a96
Merge pull request #2 from codebude/feature/minor-ui-fixes
codebude May 21, 2026
d0bec85
Fix barcode scanner rendering
codebude May 21, 2026
864f776
Target for back-facing camera and diable audio
codebude May 21, 2026
ee435ba
Merge pull request #3 from codebude/feature/fix-camera-isbn-scanner
codebude May 21, 2026
f658b98
Added git branch delete/create shorthands to cli
codebude May 22, 2026
26e3562
Merge pull request #4 from codebude/feature/enhance-cli-tools
codebude May 22, 2026
12f9a71
Fix llc sync command
codebude May 22, 2026
4354e57
Run fetch prune, before listing remote branches in cli
codebude May 22, 2026
c97b977
Fix bold rendering in cli questionaires
codebude May 22, 2026
ed957ca
Made author and page count mandatory
codebude May 22, 2026
dc27e2e
Made logo point to start page
codebude May 22, 2026
336c57b
Fixed pre-fill of suggestion input fields in book edit drawer
codebude May 22, 2026
83d852f
Switch from straight to curved spline for reading progress chart
codebude May 22, 2026
676ccb1
Enabled input suggestions in book creation dialog (similar to book ed…
codebude May 22, 2026
641aa2e
Added isbn scanner to book edit drawer
codebude May 22, 2026
3d61097
Merge pull request #5 from codebude/feature/various-ui-improvements
codebude May 22, 2026
05c2f0f
Added testing pipeline/actions
codebude May 22, 2026
068e5db
Updated Github action versions
codebude May 22, 2026
97c9090
Fix report step
codebude May 22, 2026
f88a288
Fixed uv action version
codebude May 22, 2026
4674660
Switch report step from git checkout to artifact download
codebude May 22, 2026
2206045
Added test report pr comment logic
codebude May 22, 2026
56459eb
Switched PR comment creation to be based on dorny report results
codebude May 22, 2026
351bc67
Added commit id to pr comment
codebude May 22, 2026
6185144
Fixed PR comment template interpolation
codebude May 22, 2026
82791c2
Merge pull request #6 from codebude/feature/automated-testing-action
codebude May 22, 2026
4435d9a
Fixed x-forwarded-proto header handling in nginx
codebude May 22, 2026
ba57901
Merge pull request #7 from codebude/bugfix/oidc-redirect-uri-creation
codebude May 22, 2026
55977d5
Fix opening book details from dashboard search
codebude May 22, 2026
cb2ede3
Fixed cover image presentation in book details drawer
codebude May 22, 2026
814c699
Fix suggestion- and tag inputs on small screens/mobile phones
codebude May 22, 2026
eb181f7
Refactored cover candidate representation/styling
codebude May 22, 2026
b056c3c
Touch-capable tool tips for barcharts on stats page
codebude May 22, 2026
9745684
Added pan and zoom to statistic barcharts
codebude May 22, 2026
b37d9d9
Merge pull request #8 from codebude/feature/mobile-ui-improvements
codebude May 22, 2026
c0f5b31
Touch-related fixes for charts on statistics page
codebude May 22, 2026
1ed2a0c
Fix tag input for mobile users
codebude May 22, 2026
95c2a02
Added cache invalidation based on release/version
codebude May 22, 2026
06327fe
Merge pull request #9 from codebude/bugfix/mobile-chart-controls
codebude May 22, 2026
e91c482
Statistics page navigation
codebude May 22, 2026
3798853
Reset zoom button too small on mobile + Two-finger pinch zoom not wor…
codebude May 22, 2026
11a72c0
Calendar tooltip behavior
codebude May 22, 2026
a81ad95
Merge pull request #10 from codebude/bugfix/tooltips-tooltips-tooltips
codebude May 22, 2026
280a026
Fixed timeline on small screens
codebude May 22, 2026
2c3eda8
Endless scrolling for timeline page
codebude May 22, 2026
ad47134
Fix overlapping user menu in mobile menu bar
codebude May 22, 2026
26b8c98
Added Github link besides version
codebude May 22, 2026
c60ab0b
Refactored on this page menu with DaisyUI menu control
codebude May 22, 2026
68f7c4a
View modes/sizes for library lists
codebude May 22, 2026
3441f2c
Umlauts for translations
codebude May 22, 2026
4b5b861
Added about page
codebude May 22, 2026
3cd986f
Implemented themeswitcher
codebude May 22, 2026
c3662d7
Improve alert look and feel by add close and auto-close features
codebude May 22, 2026
9b0e37d
Alert, alerts, alerts...
codebude May 22, 2026
7e29aee
Consolidate localize error functions
codebude May 22, 2026
1b23b1c
Fix semtantic error in profile page
codebude May 22, 2026
e7481e7
Clean-up backend error messages and handle them properly in frontend
codebude May 22, 2026
cb62895
Fixed custom theme loader
codebude May 22, 2026
d3aa0a9
Add name attributes to all form fields for accessibility
codebude May 22, 2026
be2400b
Refactored chart rendering to use chart.js instead of layerchart for …
codebude May 23, 2026
2899146
Improved top author book preview
codebude May 23, 2026
5d21717
Give custom theme db settings precedence over local storage
codebude May 23, 2026
5153b09
Fix custom theme preview on profile page
codebude May 23, 2026
9cbfb50
Merge pull request #11 from codebude/feature/overhaul-ui
codebude May 23, 2026
d3c0699
First shot design system for librislog
codebude May 23, 2026
aa71462
Fixed icon handling and mandatory background checks
codebude May 24, 2026
919e9a0
Dev server listen config
codebude May 24, 2026
965d4ce
Fix migration script id
codebude May 24, 2026
b79712f
Fix migration script for mandatory fields
codebude May 24, 2026
175e6b8
Consistent form field widths on mobile login page
codebude May 24, 2026
c7b5933
Fix touch hover on top author book covers
codebude May 24, 2026
6e370f2
Show saved confirmation messages for timezone and language settings o…
codebude May 24, 2026
102f580
Scroll searchbar to top on entering search intention
codebude May 24, 2026
6118f59
Reorder layout of book edit drawer for a more consistent look and feel
codebude May 24, 2026
a81f64f
Replace barcode svg with lucide icon
codebude May 24, 2026
a3d7e74
Added barcode scanner to manual book import page
codebude May 24, 2026
38de62d
Fixed camera access on mobile devices
codebude May 24, 2026
a7a7941
Refine dashboard layout
codebude May 24, 2026
5a1ac3f
Refine book progress chart layout
codebude May 24, 2026
7d9928e
Refine book progress chart layout - pt.2
codebude May 24, 2026
d1775ce
Bind progress log viewer deletion task to progress slider
codebude May 24, 2026
ada3124
Fix theme switcher and dynamic chart.js theme changing
codebude May 24, 2026
976fd53
Updated README.md and about page
codebude May 24, 2026
b0ba7b9
Optimized import book layout
codebude May 24, 2026
f925322
Merge pull request #12 from codebude/feature/design-system
codebude May 24, 2026
a18af64
Fixed backend tests to reflect on new mandatory fields
codebude May 24, 2026
58db99f
Fixed ISBN detection on manual book creation tab
codebude May 25, 2026
f57ebca
Link test badges in Readme.md to GitHub actions
codebude May 25, 2026
c4b6671
Refined add book modal sizing
codebude May 25, 2026
605b866
Refactor logo and favicon and make it adapt to the theme
codebude May 25, 2026
5a42f7b
Added new avatar generator with email as seed
codebude May 25, 2026
1b39f7c
Optimize logo color scheme and size
codebude May 25, 2026
2ad7fbf
Made librislog theme the default theme
codebude May 25, 2026
fdd1af4
Fixed camera feed size
codebude May 25, 2026
ca4f4b6
Merge pull request #13 from codebude/bugfix/various-small-fixes
codebude May 25, 2026
81d68d9
Refactor: flip import mapping to target-centric direction
codebude May 25, 2026
adbf76c
Transformers for book import mapping
codebude May 26, 2026
40ae7ab
Updated the about page
codebude May 26, 2026
296ad9c
Added Goodreads import mapping
codebude May 26, 2026
6024c08
Harmonized preview features
codebude May 26, 2026
45cb465
Relabeled preview button
codebude May 26, 2026
a2ce3c9
Merge pull request #14 from codebude/feature/import-mapping-refactoring
codebude May 26, 2026
f11e6ef
Fixed open library backend by adding user agent and added reading log…
codebude May 26, 2026
8864bc6
Fixed user agent headers for open library access
codebude May 26, 2026
d40b97f
Added release button to new version toaster
codebude May 26, 2026
d1663ce
Let stats range from earliest book to now
codebude May 26, 2026
89538e7
First shot for docs
codebude May 27, 2026
f96e8bd
Github workflows for docs
codebude May 27, 2026
08e2dee
SImplified docs workflows
codebude May 27, 2026
8524959
Clarify on single- vs multi-user
codebude May 27, 2026
feb165f
Avoid stale files in developer docs
codebude May 27, 2026
3c4e733
Hardened docs workflow
codebude May 27, 2026
039d441
Separared docker compose for developers and end-users
codebude May 27, 2026
faebf69
Updated and refined docs content
codebude May 27, 2026
5b7c9c8
Added search functionality to docs
codebude May 27, 2026
8957f5c
Added favicon to docs
codebude May 27, 2026
f8b939d
Updated README.md and credits section on about page
codebude May 27, 2026
2281603
Imrpove docs
codebude May 27, 2026
2d28829
Updated install scripts in docs
codebude May 27, 2026
b70a728
Fixed docs links in readme.md to match actual Github pages urls
codebude May 27, 2026
6404b30
Added plausible to docs to check engagement
codebude May 27, 2026
600f31f
Added star history
codebude May 27, 2026
ed417df
Added docs for headless access and user-/api-key creation
codebude May 27, 2026
43e3606
Merge pull request #15 from codebude/feature/docs
codebude May 27, 2026
e51da38
Fixed thumbnails in readme.md
codebude May 27, 2026
f8ee59b
Fixed endless scroll bug after editing a book
codebude May 27, 2026
5e4948d
Merge pull request #16 from codebude/bugfix/docs-deployment
codebude May 27, 2026
7aea8e3
Fix docs config
codebude May 27, 2026
7e70f2f
Initial setup of e2e tests with playwright
codebude May 27, 2026
cbe29c4
Switched to Docker-based playwright container
codebude May 27, 2026
ad27e20
Restructure Dockerfiles & .dockerignore for better layer caching
codebude May 27, 2026
d96eed8
Fix test data cleanup
codebude May 27, 2026
6c0a1f3
Added more detailed e2e test for import and export
codebude May 27, 2026
00b8144
Added cli e2e test functionality to docs
codebude May 27, 2026
9f71203
Added e2e tests to Github testing workflow
codebude May 27, 2026
260a594
Update docs and Readme regards testing
codebude May 27, 2026
d2090aa
Fix enviroment variables for e2e test runner
codebude May 27, 2026
8930cee
Added caching for docker builds in Github e2e test job
codebude May 27, 2026
752c464
Fixed report job in test workflow
codebude May 27, 2026
399c24f
Workflows will probably make work flow. Someday.
codebude May 27, 2026
e6a0f38
Fixed report collection in test job
codebude May 27, 2026
4af451d
Refined summary line in test summary comment
codebude May 27, 2026
d3ba51e
Merge pull request #17 from codebude/feature/playwright-frontend-tests
codebude May 27, 2026
339e9bc
Add description and hook line to readme.md
codebude May 27, 2026
7cbb09b
Enriched readme.md by features and nightly docs
codebude May 27, 2026
eab36d2
Improved title capping/truncation
codebude May 27, 2026
a900a11
Make docs server listen on host true with port 5174
codebude May 27, 2026
5611ddc
Add notes on docs development to docs
codebude May 27, 2026
7407eb2
Added information on automatic backups to docs
codebude May 27, 2026
ad6fa0b
Add search result count to library page search
codebude May 27, 2026
164dc31
Enhance calendar statistics subline by new metric
codebude May 27, 2026
2d1ddd6
Improve pages per month statistic calculations
codebude May 27, 2026
6145f68
Cleanup job for orphaned cover images
codebude May 27, 2026
ba272ec
Made pinch zoom handler on barcharts less sensitive
codebude May 27, 2026
f4064e3
Implemented search result page
codebude May 27, 2026
1174957
Added tests for search page feature
codebude May 27, 2026
5ed5f24
Fixed broken tests
codebude May 28, 2026
49a68a4
First shot of data hygiene page
codebude May 28, 2026
456613e
Added cover download and checks to batch update
codebude May 28, 2026
adb90d4
Removed lower end restriction for published year
codebude May 28, 2026
6c0e971
Refined alert notes on data hygiene
codebude May 28, 2026
1510781
Added dynamic, regex-based error translation
codebude May 28, 2026
ba26e4f
Added test cases for the data hygiene page
codebude May 28, 2026
99e1094
Updated docs to reflect latest changes
codebude May 28, 2026
58a4966
Added image viewer to docs
codebude May 28, 2026
5de7ea1
Updated the about pages
codebude May 28, 2026
1529fc7
Fixed thumbnails width in Readme.md and removed boilerplate
codebude May 28, 2026
9de10b7
Re-worked readme.md
codebude May 28, 2026
1e01180
Fixed hygiene editor constraints and updated e2e tests
codebude May 28, 2026
2edc371
Fix overflow of data hygiene view on mobile screens
codebude May 28, 2026
9f73476
Minor performance approvements for e2e tests
codebude May 28, 2026
9581932
Remove unneeded test file
codebude May 28, 2026
6fd8ab9
Fix Dockerfile.e2e chromium dependency
codebude May 28, 2026
02c43f4
Upgrade playwright docker image
codebude May 28, 2026
47400ac
Merge pull request #18 from codebude/feature/various-minor-improvements
codebude May 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Backend settings
DATABASE_URL=sqlite:///./data/librislog.db
GOOGLE_BOOKS_API_KEY= # REQUIRED for Google Books fallback — without this key Google's API returns 503.
# Create one at https://console.cloud.google.com → APIs & Services → Credentials.
GOOGLE_BOOKS_API_KEY= # optional — see https://codebude.github.io/librislog/guide/api-keys
CORS_ORIGINS=["http://localhost", "http://localhost:5173"]
LOG_LEVEL=INFO # DEBUG | INFO | WARNING | ERROR | CRITICAL
COVERS_DIR=./data/covers # Directory where downloaded cover images are stored locally.
API_KEY_ENCRYPTION_KEY=CHANGE_ME_TO_32PLUS_CHARS
# Generate a real secret: openssl rand -base64 32
API_KEY_ENCRYPTION_KEY=CHANGE_ME_TO_32PLUS_CHARS # <-- YOU MUST CHANGE THIS
AUTH_COOKIE_NAME=librislog_session
AUTH_COOKIE_SECURE=false # set true in production (HTTPS)
AUTH_COOKIE_SAMESITE=lax # lax | strict | none
Expand Down
100 changes: 100 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Docker Build & Publish

on:
push:
branches: [develop]
release:
types: [published]
workflow_dispatch:
inputs:
branch:
description: "Branch to build from"
required: false
default: develop

env:
REGISTRY: ghcr.io

jobs:
build-and-push:
runs-on: ubuntu-latest
strategy:
matrix:
service:
- name: frontend
image: librislog
dockerfile: ./frontend/Dockerfile
context: ./frontend
- name: backend
image: librislog-api
dockerfile: ./backend/Dockerfile
context: ./backend
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.inputs.branch || github.ref }}

- name: Derive version
id: version
run: |
if [ "${{ github.event_name }}" = "release" ]; then
VERSION="${{ github.event.release.tag_name }}"
else
VERSION="$(git describe --tags --always 2>/dev/null || echo 'v0.0.0-dev')"
fi
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "sha_short=$(echo '${{ github.sha }}' | cut -c1-7)" >> "$GITHUB_OUTPUT"

- name: Sanitize version for Docker tag
id: sanitize
run: |
VERSION="${{ steps.version.outputs.version }}"
SANITIZED="$(echo "$VERSION" | sed 's/[^a-zA-Z0-9_.-]/-/g')"
SANITIZED="$(echo "$SANITIZED" | sed 's/^[^a-zA-Z0-9_]\+//')"
echo "sanitized_tag=${SANITIZED:0:128}" >> "$GITHUB_OUTPUT"

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4

- name: Log in to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Generate image tags
id: tags
run: |
IMAGE="${{ env.REGISTRY }}/${{ github.repository }}/${{ matrix.service.image }}"
SHA_SHORT="${{ steps.version.outputs.sha_short }}"

if [ "${{ github.event_name }}" = "release" ]; then
SANITIZED="${{ steps.sanitize.outputs.sanitized_tag }}"
TAGS="${IMAGE}:${SANITIZED},${IMAGE}:latest"
else
TAGS="${IMAGE}:develop,${IMAGE}:${SHA_SHORT}"
fi

echo "tags=${TAGS}" >> "$GITHUB_OUTPUT"

- name: Build and push
uses: docker/build-push-action@v7
with:
context: ${{ matrix.service.context }}
file: ${{ matrix.service.dockerfile }}
push: true
platforms: linux/amd64
tags: ${{ steps.tags.outputs.tags }}
build-args: |
APP_VERSION=${{ steps.version.outputs.version }}
GIT_SHA=${{ github.sha }}
${{ matrix.service.name == 'frontend' && 'PUBLIC_DEFAULT_LOCALE=en' || '' }}
cache-from: type=gha
cache-to: type=gha,mode=max
109 changes: 109 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
name: Docs

on:
push:
branches: [develop]
release:
types: [published]

concurrency:
group: docs-deploy
cancel-in-progress: true

env:
NODE_VERSION: "22"

jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
path: release

- uses: actions/checkout@v6
with:
ref: develop
path: develop

- name: Determine release ref
id: release-ref
working-directory: release
run: |
if [ "${{ github.event_name }}" = "release" ]; then
REF="${{ github.event.release.tag_name }}"
else
DEFAULT_BRANCH=$(git remote show origin | sed -n '/HEAD branch/s/.*: //p')
REF=$(git tag --list 'v*' --sort=-version:refname | head -1)
REF="${REF:-$DEFAULT_BRANCH}"
fi
echo "ref=${REF}" >> "$GITHUB_OUTPUT"

- name: Checkout release ref
working-directory: release
run: git checkout "${{ steps.release-ref.outputs.ref }}"

- name: Check if release ref has docs
id: check-release-docs
working-directory: release
run: |
if [ -f docs/package.json ] && [ -f docs/.vitepress/config.ts ]; then
echo "has_docs=true" >> "$GITHUB_OUTPUT"
else
echo "has_docs=false" >> "$GITHUB_OUTPUT"
fi

- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
cache-dependency-path: |
release/docs/package-lock.json
develop/docs/package-lock.json

- name: Build release docs
if: steps.check-release-docs.outputs.has_docs == 'true'
working-directory: release/docs
run: |
npm ci
npx vitepress build
mv .vitepress/dist /tmp/dist-release

- name: Build nightly docs
working-directory: develop/docs
run: |
npm ci
cp .vitepress/config.ts .vitepress/config.original.ts
cp .vitepress/config.nightly.ts .vitepress/config.ts
npx vitepress build
mv .vitepress/dist /tmp/dist-nightly

- name: Prepare full deploy (release + nightly)
if: steps.check-release-docs.outputs.has_docs == 'true'
run: |
mv /tmp/dist-release ./dist
mkdir -p ./dist/next
cp -a /tmp/dist-nightly/. ./dist/next/

- name: Prepare nightly-only deploy
if: steps.check-release-docs.outputs.has_docs != 'true'
run: cp -a /tmp/dist-nightly/. ./dist/

- uses: peaceiris/actions-gh-pages@v4
if: steps.check-release-docs.outputs.has_docs == 'true'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
keep_files: false

- uses: peaceiris/actions-gh-pages@v4
if: steps.check-release-docs.outputs.has_docs != 'true'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
destination_dir: next
keep_files: false
Loading
Loading