Skip to content

Commit d890eed

Browse files
authored
🔖 Release v0.0.10 (#580)
🔖 Release v0.0.10
2 parents a2c4280 + ac15b0a commit d890eed

File tree

131 files changed

+8566
-1549
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

131 files changed

+8566
-1549
lines changed

.github/CHANGELOG.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,57 @@
11
# Changelog
22

3+
<a name="0.0.10"></a>
4+
## 0.0.10 (2025-02-01)
5+
6+
### Added
7+
8+
- ✨ Make bundled web app a PWA ([#570](https://github.com/stumpapp/stump/issues/570)) [[c957fd3](https://github.com/stumpapp/stump/commit/c957fd3e505072f15b4b965ab6e87fd2e0bfddeb)]
9+
- ✨ Support &#x60;apple-mobile-web-app-capable&#x60; meta ([#567](https://github.com/stumpapp/stump/issues/567)) [[005ba0e](https://github.com/stumpapp/stump/commit/005ba0ea084efb27f912b6b2b1e6f7853c93ecd4)]
10+
- ✨ Support basic series keyword search for OPDS v1.2 ([#558](https://github.com/stumpapp/stump/issues/558)) [[f32244d](https://github.com/stumpapp/stump/commit/f32244de286f8dca5128df7d00b84143157346d3)]
11+
- ✨ Allow disabling job overlay ([#542](https://github.com/stumpapp/stump/issues/542)) [[821c1bc](https://github.com/stumpapp/stump/commit/821c1bc719803a9197f87ee45a82c68d4ac53b46)]
12+
- ✨ Add GET and PUT endpoints for media metadata ([#528](https://github.com/stumpapp/stump/issues/528)) [[6dda732](https://github.com/stumpapp/stump/commit/6dda7326e1dc50cc872fba4c955aff592f7bbbfb)]
13+
- ✨ render children of an epub content item [[2786af4](https://github.com/stumpapp/stump/commit/2786af4ef827a3e363c2e297fbb42bf9d35d1d63)]
14+
15+
### Changed
16+
17+
- 💄 Improve small topbar nav issues ([#540](https://github.com/stumpapp/stump/issues/540)) [[acd8a24](https://github.com/stumpapp/stump/commit/acd8a24043bfd39bb71a493989469539f72bff04)]
18+
- ♻️ Create Preformatted component to render JSON ([#505](https://github.com/stumpapp/stump/issues/505)) [[d744f66](https://github.com/stumpapp/stump/commit/d744f66ef9a26ee29ea1eafcc20b18be81962875)]
19+
20+
### Fixed
21+
22+
- 🐛 Fix update failure for new metadata on existing books ([#577](https://github.com/stumpapp/stump/issues/577)) [[a9cc077](https://github.com/stumpapp/stump/commit/a9cc077b2deb649c02fad04860d37c37d76804c4)]
23+
- 🐛 Fix path error in koreader router ([#576](https://github.com/stumpapp/stump/issues/576)) [[13ac312](https://github.com/stumpapp/stump/commit/13ac312464e54bb8573fb8e0b2ca0cbf97f76d3a)]
24+
- 🐛 Fix incorrect URLs for library thumbnail ops ([#575](https://github.com/stumpapp/stump/issues/575)) [[bcdef1f](https://github.com/stumpapp/stump/commit/bcdef1fbeec855adb4fb3ece6be96c8291930e80)]
25+
- 🐛 Fix logical error preventing force rebuild scans ([#574](https://github.com/stumpapp/stump/issues/574)) [[28cff9d](https://github.com/stumpapp/stump/commit/28cff9d8c2d18167b090c073a98000d75ddec518)]
26+
- 🐛 Remove auto-pagination for &#x60;usePageQuery&#x60; wrapper ([#564](https://github.com/stumpapp/stump/issues/564)) [[2a89107](https://github.com/stumpapp/stump/commit/2a89107f32d83b97076cc96b8023177e4f5e0748)]
27+
- 🐛 Fix &#x60;TemplateRegistrationFailed&#x60; error when sending email ([#550](https://github.com/stumpapp/stump/issues/550)) [[25d0deb](https://github.com/stumpapp/stump/commit/25d0deb2989a8ad1edd7b22da639f01a1c448a8c)]
28+
- 🐛 Enforce case-insensitive username uniqueness ([#557](https://github.com/stumpapp/stump/issues/557)) [[1331426](https://github.com/stumpapp/stump/commit/1331426f759e40274c26f85cfaea7851be0dd944)]
29+
- 🐛 Fix unordered OPDS entries ([#553](https://github.com/stumpapp/stump/issues/553)) [[63dc413](https://github.com/stumpapp/stump/commit/63dc413917420b68c5fe92221d2d2cd4fa5243b6)]
30+
- ✏️ Fix missing whitespace in upload modal ([#547](https://github.com/stumpapp/stump/issues/547)) [[10eaee0](https://github.com/stumpapp/stump/commit/10eaee0e2e526aba4be2009fe55d03979f2b86ae)]
31+
- 🐛 Restore media/series when previously missing ([#529](https://github.com/stumpapp/stump/issues/529)) [[21cced8](https://github.com/stumpapp/stump/commit/21cced8d64be95560ca82654aaff1fd1bf1f49d7)]
32+
- 🐛 Fix invalid method for cancel job ([#527](https://github.com/stumpapp/stump/issues/527)) [[0ebe1ad](https://github.com/stumpapp/stump/commit/0ebe1ada1036fa72780e8593b56d4d923822e45e)]
33+
- 🐛 fix bookmark click redirect ([#525](https://github.com/stumpapp/stump/issues/525)) [[638fafd](https://github.com/stumpapp/stump/commit/638fafd7fae0ec1f7b8202856e41a653013c7403)]
34+
35+
### Miscellaneous
36+
37+
- 🌐 Update translations (Japanese) ([#578](https://github.com/stumpapp/stump/issues/578)) [[899084d](https://github.com/stumpapp/stump/commit/899084d654d653a3af5017fe2ecf24f317e7d1a9)]
38+
- 🔨 Fix flake.nix so its usable ([#579](https://github.com/stumpapp/stump/issues/579)) [[d1d264f](https://github.com/stumpapp/stump/commit/d1d264f5dcd5bda006ed93f47f999912f13bf714)]
39+
- 🌐 Update translations (multi) ([#572](https://github.com/stumpapp/stump/issues/572)) [[370e39b](https://github.com/stumpapp/stump/commit/370e39b73d34c2bb21b0359b51acdf84f0a62a50)]
40+
- 🌐 Update translations (multi) ([#562](https://github.com/stumpapp/stump/issues/562)) [[5828147](https://github.com/stumpapp/stump/commit/5828147bfccfaa378d16d08ed18250609c0e834d)]
41+
- 🔀 Promote experimental features ([#560](https://github.com/stumpapp/stump/issues/560)) [[6676d34](https://github.com/stumpapp/stump/commit/6676d3452c2654515261f907c86bf9a2f2f934bd)]
42+
- Merge branch &#x27;develop&#x27; into experimental [[e7cde28](https://github.com/stumpapp/stump/commit/e7cde2839f7ffc36d742c3633b02310ff352d966)]
43+
- 📝 Remove Tachiyomi plans from repo and docs ([#554](https://github.com/stumpapp/stump/issues/554)) [[2cf45b4](https://github.com/stumpapp/stump/commit/2cf45b41ad179f1b48d8563524436e3999a3707d)]
44+
- 🌐 Update translations (multi) ([#543](https://github.com/stumpapp/stump/issues/543)) [[4f5c470](https://github.com/stumpapp/stump/commit/4f5c470fe6750bf9d86a9dda3cf1de25c5c58ca5)]
45+
- Merge remote-tracking branch &#x27;origin/develop&#x27; into experimental [[6d7759d](https://github.com/stumpapp/stump/commit/6d7759dc0b762acc706d90fd170a54f99d6e9785)]
46+
- 🌐 Update translations (Japanese) ([#535](https://github.com/stumpapp/stump/issues/535)) [[d34f10d](https://github.com/stumpapp/stump/commit/d34f10dc249d53f69f4bd9e679c4fa074f36a4b0)]
47+
- Change CORS layer construction to allow wildcard ([#538](https://github.com/stumpapp/stump/issues/538)) [[9459fb7](https://github.com/stumpapp/stump/commit/9459fb78a528116d318dca92adf040776f52fcd5)]
48+
- 🌐 Update translations ([#489](https://github.com/stumpapp/stump/issues/489)) [[2dc4fef](https://github.com/stumpapp/stump/commit/2dc4fefdf218cb8043397138cc4ce90caed9711a)]
49+
- Merge remote-tracking branch &#x27;origin/experimental&#x27; into experimental [[89e1885](https://github.com/stumpapp/stump/commit/89e18859a04288cd7c386dcad22859191bd73661)]
50+
- Merge remote-tracking branch &#x27;origin/develop&#x27; into experimental [[b56f999](https://github.com/stumpapp/stump/commit/b56f999a836d1133143a801fa234d34b4365b113)]
51+
- Merge pull request [#521](https://github.com/stumpapp/stump/issues/521) from xendke/recursive-epub-toc [[ab52b2a](https://github.com/stumpapp/stump/commit/ab52b2a5a8350a58e134ff8089f53a40d5d375a5)]
52+
- Merge remote-tracking branch &#x27;origin/develop&#x27; into experimental [[312f5b3](https://github.com/stumpapp/stump/commit/312f5b306d9e3b2d03fb045d0776d9d7237101fa)]
53+
54+
355
<a name="0.0.9"></a>
456
## 0.0.9 (2024-12-08)
557

Cargo.lock

Lines changed: 10 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ members = [
88
]
99

1010
[workspace.package]
11-
version = "0.0.9"
11+
version = "0.0.10"
1212
rust-version = "1.81.0"
1313

1414
[workspace.dependencies]

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Stump is a free and open source comics, manga and digital book server with OPDS
3131
- [Roadmap 🗺](#roadmap-)
3232
- [Getting Started 🚀](#getting-started-)
3333
- [Developer Guide 💻](#developer-guide-)
34-
- [Where to start?](#where-to-start)
34+
- [Where to start?](#where-to-start)
3535
- [Project Structure 📦](#project-structure-)
3636
- [Apps](#apps)
3737
- [Core](#core)
@@ -62,7 +62,6 @@ The following items are the major targets for Stump's first stable release:
6262
Things you can expect to see afterwards:
6363

6464
- 🖥️ Cross-platform desktop app _(Windows, Mac, Linux)_
65-
- 📖 [Tachiyomi](https://github.com/stumpapp/tachiyomi-extensions) support
6665
- 📱 In-house mobile app _(Android, iOS)_
6766
- 🔎 Versatile full-text search _(blocked by [prisma#9414](https://github.com/prisma/prisma/issues/9414))_
6867
- 👥 Configurable book clubs _(see [this issue](https://github.com/stumpapp/stump/issues/120))_

apps/desktop/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@stump/desktop",
3-
"version": "0.0.9",
3+
"version": "0.0.10",
44
"description": "",
55
"license": "MIT",
66
"scripts": {

apps/expo/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,6 @@
5252
"tailwindcss": "3.3.2"
5353
},
5454
"name": "@stump/mobile",
55-
"version": "0.0.9",
55+
"version": "0.0.10",
5656
"private": true
5757
}

apps/server/src/config/cors.rs

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,47 @@ fn merge_origins(origins: &[&str], local_origins: Vec<String>) -> Vec<HeaderValu
3232
pub fn get_cors_layer(config: StumpConfig) -> CorsLayer {
3333
let is_debug = config.is_debug();
3434

35-
let mut allowed_origins = Vec::new();
36-
for origin in config.allowed_origins {
37-
if let Ok(val) = origin.parse::<HeaderValue>() {
38-
allowed_origins.push(val)
39-
} else {
40-
tracing::error!("Failed to parse allowed origin: {:?}", origin);
41-
}
35+
// Create CORS layer
36+
let mut cors_layer = CorsLayer::new();
37+
cors_layer = cors_layer
38+
.allow_methods([
39+
Method::GET,
40+
Method::PUT,
41+
Method::POST,
42+
Method::PATCH,
43+
Method::DELETE,
44+
Method::OPTIONS,
45+
Method::CONNECT,
46+
])
47+
.allow_headers([ACCEPT, AUTHORIZATION, CONTENT_TYPE])
48+
.allow_credentials(true);
49+
50+
// If allowed origins include the general wildcard ("*") then we can return a permissive CORS layer and exit early.
51+
if config.allowed_origins.contains(&"*".to_string()) {
52+
cors_layer = cors_layer.allow_origin(AllowOrigin::any());
53+
54+
#[cfg(debug_assertions)]
55+
tracing::trace!(
56+
?cors_layer,
57+
"Cors configuration completed (allowing any origin)"
58+
);
59+
60+
return cors_layer;
4261
}
4362

63+
// Convert allowed origins from config into `HeaderValue`s for CORS layer.
64+
let allowed_origins: Vec<_> = config
65+
.allowed_origins
66+
.into_iter()
67+
.filter_map(|origin| match origin.parse::<HeaderValue>() {
68+
Ok(val) => Some(val),
69+
Err(e) => {
70+
tracing::error!("Failed to parse allowed origin: {origin:?}: {e}");
71+
None
72+
},
73+
})
74+
.collect();
75+
4476
let local_ip = local_ip()
4577
.map_err(|e| {
4678
tracing::error!("Failed to get local ip: {:?}", e);
@@ -70,8 +102,6 @@ pub fn get_cors_layer(config: StumpConfig) -> CorsLayer {
70102
base
71103
};
72104

73-
let mut cors_layer = CorsLayer::new();
74-
75105
let defaults = if is_debug {
76106
DEBUG_ALLOWED_ORIGINS
77107
} else {
@@ -87,19 +117,6 @@ pub fn get_cors_layer(config: StumpConfig) -> CorsLayer {
87117
.collect::<Vec<HeaderValue>>(),
88118
));
89119

90-
cors_layer = cors_layer
91-
.allow_methods([
92-
Method::GET,
93-
Method::PUT,
94-
Method::POST,
95-
Method::PATCH,
96-
Method::DELETE,
97-
Method::OPTIONS,
98-
Method::CONNECT,
99-
])
100-
.allow_headers([ACCEPT, AUTHORIZATION, CONTENT_TYPE])
101-
.allow_credentials(true);
102-
103120
#[cfg(debug_assertions)]
104121
tracing::trace!(?cors_layer, "Cors configuration complete");
105122

apps/server/src/errors.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ impl From<prisma_client_rust::QueryError> for APIError {
303303

304304
/// The response body for API errors. This is just a basic JSON response with a status code and a message.
305305
/// Any axum handlers which return a [`Result`] with an Error of [`APIError`] will be converted into this response.
306+
#[derive(Debug)]
306307
pub struct APIErrorResponse {
307308
status: StatusCode,
308309
message: String,
@@ -324,6 +325,8 @@ impl IntoResponse for APIErrorResponse {
324325
"message": self.message,
325326
});
326327

328+
tracing::error!(error = ?self, "API error response");
329+
327330
let base_response = Json(body).into_response();
328331

329332
let mut builder = Response::builder()

apps/server/src/main.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ fn debug_setup() {
1818
"STUMP_CLIENT_DIR",
1919
env!("CARGO_MANIFEST_DIR").to_string() + "/../web/dist",
2020
);
21-
std::env::set_var(
22-
"EMAIL_TEMPLATES_DIR",
23-
env!("CARGO_MANIFEST_DIR").to_string() + "/../../crates/email/templates",
24-
);
2521
std::env::set_var("STUMP_PROFILE", "debug");
2622
}
2723

0 commit comments

Comments
 (0)