Claudio Ortolina
a0539cf2ea
ML-174: research and plan
2026-05-09 19:06:29 +01:00
Claudio Ortolina
6f865a7b4d
ML-173: replace aws-sdk with aws4 + built-in fetch
...
Replace @aws-sdk/client-s3 (~150 transitive deps, ~14MB) with aws4
(0 transitive deps, ~40KB) and Node.js built-in fetch+crypto for
S3 ListObjectsV2 against Hetzner Object Storage.
- New s3-client.ts: SigV4 signing via aws4, regex-based XML parsing
with namespace tolerance, pagination support, 5 error categories
- 29 unit tests (node:test, zero-dependency) covering signing,
parsing, entities, missing fields, pagination, abort, errors
- Settlement guard for double done(null) on abort
- XML entity decoding and regex metacharacter escaping
- Dependency surface: 150 packages → 1 (aws4, single-file, auditable)
2026-05-09 10:46:07 +01:00
Claudio Ortolina
d21cbb306c
ML-173: research and plan
2026-05-09 09:49:38 +01:00
Claudio Ortolina
ce014db1d5
ML-168: account for counts and pagination shift
2026-05-09 07:17:36 +01:00
Claudio Ortolina
17f2635fa6
ML-172: add research task
2026-05-09 06:52:10 +01:00
Claudio Ortolina
f8780f3582
ML-171: research and plan
2026-05-09 06:29:38 +01:00
Claudio Ortolina
87310fd8ce
ML-170: research and plan
2026-05-08 15:07:50 +01:00
Claudio Ortolina
1247b89892
ML-169: add subtasks
2026-05-08 10:57:06 +01:00
Claudio Ortolina
07d2e3fee3
ML-169: research and plan
2026-05-08 09:57:00 +01:00
Claudio Ortolina
231fdc3bad
ML-168: format
2026-05-08 09:54:57 +01:00
Claudio Ortolina
3876861f6f
ML-168: research and plan
2026-05-08 07:04:20 +01:00
Claudio Ortolina
365195ff75
Backlog cleanup
2026-05-07 10:01:47 +01:00
Claudio Ortolina
c550cb8c35
ML-167: presto performance improvements
2026-05-06 12:01:27 +01:00
Claudio Ortolina
9d0ab1ffc6
ML-166: First working implementation
2026-05-05 16:34:09 +01:00
Claudio Ortolina
cccd28a9f9
ML-165: implementation
2026-05-05 13:43:18 +01:00
Claudio Ortolina
34ead6e8b5
ML-165: research and plan
2026-05-05 13:11:19 +01:00
Claudio Ortolina
dc3b31378d
Run prettier on backlog folder
2026-05-04 21:22:27 +01:00
Claudio Ortolina
7c6760d7db
ML-158: force single-line log output in production
...
Three-layer architecture:
- Logster v2 handles HTTP request and LiveView socket telemetry in logfmt format
- Custom formatter as safety net escaping any remaining embedded newlines
- Config flag (single_line_logging) gating Logster attachment to prod only
Dev environment retains multi-line format for readability.
2026-05-04 15:01:10 +01:00
Claudio Ortolina
55f05d2011
ML-161: umbrella issue is done
2026-05-04 14:19:21 +01:00
Claudio Ortolina
26a9469b3f
ML-164: implementation
2026-05-04 13:47:34 +01:00
Claudio Ortolina
904f540031
ML-163: implementation
2026-05-04 13:25:08 +01:00
Claudio Ortolina
51bd24d5b4
ML-162: enable /api/v1/errors endpoint
2026-05-04 13:14:40 +01:00
Claudio Ortolina
213ca31a42
Fix parent task IDs
2026-05-04 11:04:47 +01:00
Claudio Ortolina
2bf943a206
ML-163: plan
2026-05-04 10:33:08 +01:00
Claudio Ortolina
85275cb88b
Ml-162: plan
2026-05-04 10:13:09 +01:00
Claudio Ortolina
3d7e076906
Streamline backlog task tags
2026-05-04 09:20:11 +01:00
Claudio Ortolina
50b9023707
ML-161 (and subtasks): research and plan
2026-05-04 09:17:16 +01:00
Claudio Ortolina
218ddca62d
ML-160: enable llm access to production logs
2026-05-04 08:36:00 +01:00
Claudio Ortolina
3f2f03849a
ML-160: research and plan
2026-05-04 07:52:29 +01:00
Claudio Ortolina
51390974a8
ML-159: add cursor and visual mode to log browser
2026-05-03 22:34:50 +01:00
Claudio Ortolina
3512f812ba
ML-159: plan review
2026-05-03 22:21:48 +01:00
Claudio Ortolina
cb07e70d36
ML-159: research and plan
2026-05-03 22:14:49 +01:00
Claudio Ortolina
5981970039
ML-157: implementation and configuration
2026-05-03 16:33:23 +01:00
Claudio Ortolina
a6ef5996ed
Backlog cleanup
2026-05-03 15:40:20 +01:00
Claudio Ortolina
b7666168dc
ML-158: plan review
2026-05-03 15:39:19 +01:00
Claudio Ortolina
29bedcd028
ML-158: task research and plan
2026-05-03 15:28:02 +01:00
Claudio Ortolina
9fda537bf9
ML-157: iterate on plan
2026-05-03 14:59:14 +01:00
Claudio Ortolina
a8eb4fe0b5
ML-157: task research and plan
2026-05-03 14:45:22 +01:00
Claudio Ortolina
b396dbe037
ML-156: plan revisions
2026-05-02 19:14:25 +01:00
Claudio Ortolina
dac946bbd6
ML-156: initial research
2026-05-02 17:17:11 +01:00
Claudio Ortolina
ed67f97271
Move done -> completed
2026-05-01 15:29:33 +01:00
Claudio Ortolina
3b558044b4
refactor: extract Records sub-contexts (Search, Import, Enrichment)
...
Split the 450+ line Records context into focused modules:
- Records.Search — FTS5 search, SearchParser integration, genre listing
- Records.Import — MusicBrainz release/group import, release status
- Records.Enrichment — genre population, cover refresh, color extraction,
MusicBrainz data refresh
- Records.Query — shared helpers (essential_fields, order_alphabetically macro)
Records module is now a facade with defdelegate for compile-time safety.
CRUD and PubSub stay directly in Records. Tests moved alongside each
sub-module. Zero callers changed, 886 tests pass.
2026-04-30 17:20:37 +01:00
Claudio Ortolina
08fcd70a8c
ML-154: add early platform detection for SQLite extensions
2026-04-30 13:39:39 +01:00
Claudio Ortolina
13068aa0ac
ML-153: move MusicBrainz data transforms from Record
2026-04-30 13:21:18 +01:00
Claudio Ortolina
b8b3b24ffa
ML-151: document Assets.Cache TTL and invalidation strategy
...
Expand @moduledoc with cache key structure, 7-day TTL via
@one_week_seconds, periodic pruning by PruneAssetCache (every 12h),
and rationale for TTL-only invalidation (content-addressable immutable
assets). Update architecture.md entry accordingly.
2026-04-30 13:07:06 +01:00
Claudio Ortolina
c489fde1cc
ML-152: add /api/v1/ version prefix to all API routes
2026-04-30 11:57:43 +01:00
Claudio Ortolina
70d5f3bf61
Backlog grooming session
2026-04-30 11:50:07 +01:00
Claudio Ortolina
f8a52993c1
ML-149: Fix selected bar not showing track data in Safari
2026-04-30 07:21:25 +01:00
Claudio Ortolina
597cc89821
ML-147: Upgrade to ServerSentEvents 1.0.0
2026-04-27 22:02:45 +01:00
Claudio Ortolina
839277de94
Done cleanup
2026-04-25 22:27:58 +01:00