Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions static/dashboard/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ One line per version, newest first. Every REST-facing change bumps the version i
(the app surfaces it via `/system/dashboard/update-check` and the "Update available" pill), so this
file is the human record of what each bump enables. Keep entries short: `version - change (TICKET)`.

- **1.1.4** - Calibre-Web auto-login: send Flask-Login `remember_me` so the session includes a persistent `remember_token`, which sticks in the WebView despite anonymous/guest browsing. (ADFA-5043)
- **1.1.3** - `/auth/:service/session`: server-side login returning the session cookie, for WebView auto-login as box admin (Calibre-Web / Kolibri). (ADFA-5043)
- **1.1.2** - ZIM download URL built from the project subdir (`/zim/<project>/<file>`), so non-Wikipedia ZIMs download instead of 404ing. Pairs with the app sending `<project>/<file>`. (ADFA-5042)
- **1.1.1** - `/system/dashboard/update-check`: reports installed vs. latest so the card can show "Up to date / Update available". (ADFA-5026)
Expand Down
4 changes: 2 additions & 2 deletions static/dashboard/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion static/dashboard/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "dashboard-console",
"version": "1.1.3",
"version": "1.1.4",
"description": "",
"main": "index.js",
"scripts": {
Expand Down
4 changes: 4 additions & 0 deletions static/dashboard/sockets/books.query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ export async function getCalibreSession(): Promise<{ cookie: string; csrfToken:
const cred = getCredential('calibre');
loginData.append('username', cred.username);
loginData.append('password', cred.password);
// ADFA-5043: request Flask-Login's persistent "remember me" so the response also sets a
// `remember_token` cookie. Calibre-Web allows anonymous (guest) browsing, so the session cookie
// alone doesn't stick in the WebView; the remember_token re-authenticates as admin reliably.
loginData.append('remember_me', 'on');

const authRes = await fetch(`${CALIBRE_WEB_LOCAL_URL}/login`, {
method: 'POST',
Expand Down
Loading