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
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