Commit Graph

113 Commits

Author SHA1 Message Date
Claudio Ortolina 7338825606 ML-183: scale Presto full-res layout 2026-05-15 08:22:27 +01:00
Claudio Ortolina 8391cf275a ML-180: remove backup download feature
Delete ArchiveController, its routes, the maintenance UI backup
button, and the test file. Management scripts and Litestream
supersede this functionality.
2026-05-15 07:13:33 +01:00
Claudio Ortolina 74b4e2524f ML-182.3; update more tests and findings 2026-05-15 07:04:04 +01:00
Claudio Ortolina 9eda49ed46 ML-182.3: migrate record_set/show tests to PhoenixTest 2026-05-15 06:47:25 +01:00
Claudio Ortolina 9b7ed2ae8b ML-182.6: wave 6 conversion 2026-05-14 23:25:15 +01:00
Claudio Ortolina f20a7af5d7 ML-182.5: wave 5 conversion 2026-05-14 23:25:05 +01:00
Claudio Ortolina 3cb7509a4b ML-182.4: wave 4 conversion 2026-05-14 23:24:45 +01:00
Claudio Ortolina 2237c7db20 ML-182.3: partial progress in conversion 2026-05-14 23:23:15 +01:00
Claudio Ortolina dda700ad96 ML-182: convert 4 test files to PhoenixTest only
Waves 1-2: scrobble_live/index, scrobbled_tracks_live/index, release_group_show, release_show. Dropped unwrap/2 bridges and page_title/1 usage. Search form tests use visit with query params. page_title tests use assert_has("title", ...).
2026-05-14 23:22:02 +01:00
Claudio Ortolina 8843f0ad4f ML-182: migration to phoenix_test (plan) 2026-05-14 22:42:42 +01:00
Claudio Ortolina f108e6f062 ML-174: add empty action to record set dropdown menu
Add RecordSets.empty_record_set/1 that bulk-deletes all items in a set via
a single DELETE query and returns the reloaded empty set. Add Empty button
with confirmation prompt to both index and show view dropdowns.
2026-05-14 17:15:06 +01:00
Claudio Ortolina a59dd22a18 ML-168: broadcast index_changed event after background import
Import workers now broadcast :records_index_changed on
"records:index_changed" after successful import via
Records.broadcast_index_changed/0.

CollectionLive.Index and WishlistLive.Index subscribe to the
topic in mount/3 and reload their record streams on receipt,
with a live_action guard to skip reloads when the grid is
hidden behind a modal (:import, :barcode_scan).

IndexActions.handle_index_changed/1 refreshes total_entries
before reloading to keep the pagination bar accurate.
2026-05-14 17:15:06 +01:00
Claudio Ortolina c86ce9d485 Ml-174: add labels 2026-05-13 21:05:34 +01:00
Claudio Ortolina 9c67591c6d ML-181: add labels 2026-05-13 20:37:26 +01:00
Claudio Ortolina 344d88127d ML-181: hardening asset routes (plan) 2026-05-13 20:28:35 +01:00
Claudio Ortolina 8ece3ba891 Backlog cleanup 2026-05-12 11:30:59 +01:00
Claudio Ortolina f41c8f3bcd ML-180: remove backup function (plan) 2026-05-12 11:28:22 +01:00
Claudio Ortolina a3ee651b22 ML-170: ready to be worked on 2026-05-12 11:03:55 +01:00
Claudio Ortolina 315e630e28 ML-174: remove double heading 2026-05-12 07:50:10 +01:00
Claudio Ortolina 0aa51e38e8 ML-175: mark task done 2026-05-11 17:44:26 +01:00
Claudio Ortolina a88c704fe5 ML-175: parse bash commands structurally via unbash
Replace regex-based command blocking with structural AST parsing
using unbash (zero-dependency TypeScript bash parser). The walker
collects command names only from executable positions (simple
commands, pipelines, subshells, command substitutions, control-flow
bodies), excluding arguments, comments, and quoted strings.

- Convert to directory-style extension with pinned unbash@3.0.0
- Add AST walker (ast.ts) covering 15 shell construct types
- Update blocked_commands to plain names instead of regexes
- Keep regex fallback for parse failures (degradation path)
- Path-based blocking unchanged for non-bash tools
- 41 tests cover blocked/allowed cases including false positives
2026-05-11 17:42:48 +01:00
Claudio Ortolina 5b4be08e5b Update dependencies
ex_ast 0.11.0 => 0.11.1
oban_web 2.12.3 => 2.12.4

The update closes ML-171
2026-05-11 14:23:13 +01:00
Claudio Ortolina 5f86ca1b86 ML-171: track upstream fix 2026-05-11 14:18:29 +01:00
Claudio Ortolina 3a825f7a90 ML-170: revised plan 2026-05-11 09:27:53 +01:00
Claudio Ortolina 21199de419 Cleanup labels and assignees 2026-05-11 07:49:40 +01:00
Claudio Ortolina 2f94657ade ML-179.2: track refactor task 2026-05-11 07:23:55 +01:00
Claudio Ortolina 3b599f62a3 ML-179.1: track refactor task 2026-05-11 07:23:19 +01:00
Claudio Ortolina c5bba79c37 ML-179: Refactor presto application 2026-05-11 07:22:44 +01:00
Claudio Ortolina 83a4f66036 ML-178: implementation 2026-05-10 20:45:03 +01:00
Claudio Ortolina ba62d54cc5 ML-177: implementation 2026-05-10 20:39:18 +01:00
Claudio Ortolina e322f75079 ML-178: plan 2026-05-10 20:23:12 +01:00
Claudio Ortolina 1ade749cfe ML-177: plan 2026-05-10 20:23:03 +01:00
Claudio Ortolina 4babb29d73 ML-176: implementation complete 2026-05-10 15:59:49 +01:00
Claudio Ortolina d4242b6e93 ML-176.2: add presto splash, search 2026-05-10 15:59:37 +01:00
Claudio Ortolina 4edf2f0cfe ML-176.2: research and implementation plan 2026-05-10 15:07:06 +01:00
Claudio Ortolina a3bc6d7cf3 ML-176.1: support search in collection api controller 2026-05-10 14:52:01 +01:00
Claudio Ortolina 12747738af ML-176.1: plan 2026-05-10 14:44:19 +01:00
Claudio Ortolina cc0d97b160 ML-176: requirements 2026-05-10 14:39:03 +01:00
Claudio Ortolina ab4548b748 ML-175: research and plan 2026-05-10 07:51:18 +01:00
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