signalk-maintenance-tracker 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,63 @@
1
+ # v1.7.0
2
+
3
+ Log entries can now carry files, and everything about an entry lives in one
4
+ details modal.
5
+
6
+ ## Highlights
7
+
8
+ - **Log entry attachments.** Marking a task complete, adding a log entry or
9
+ editing one can now attach files — photos of the work, receipts — the
10
+ same way tasks carry manuals. The log entry modal gains a **Files** field
11
+ after Notes. On create, files queue locally and upload once the entry is
12
+ saved. Bytes live under `files/logs/<log_id>/`, indexed by a new
13
+ `log_files` table (migration 9). New routes mirror the task ones:
14
+ `GET/POST /logs/:id/files` and `GET/DELETE /logs/:id/files/:fileId`.
15
+ Every log entry the API returns carries a `files` array. Deleting an
16
+ entry removes its files, and deleting a task removes those of all its
17
+ entries.
18
+ - **Log details modal.** Log tables now show only the key figures per row.
19
+ A green magnifying glass on each row (visible logged out too) opens a
20
+ read-only modal with the entry's task or title, dates, runtime, who
21
+ logged it, notes, files and images. On phones the master log shows just
22
+ the task name.
23
+ - **Attachments in log downloads.** The download log modal gains a
24
+ **Download file attachments** checkbox, on by default. When ticked, the
25
+ log and every entry's files download as one `.zip`, each entry's files in
26
+ their own `attachments/<task>_<date>_log-<id>/` folder. The log gains an
27
+ Attachments column (an `attachments` array in JSON) listing each file's
28
+ path in the zip. The zip is built in the browser with no new
29
+ dependency, and is capped at 4 GB.
30
+
31
+ ## Changes
32
+
33
+ - Log entries record when they were last edited, in a new
34
+ `log_entries.updated_at` column (migration 10). It is only set when a
35
+ field actually changes. The details modal shows it as **Updated**,
36
+ alongside **Completed** and **Logged**.
37
+ - Default notification states are softer: due soon is now `alert` and
38
+ overdue is now `warn` (previously `warn` / `alarm`). Existing installs
39
+ keep their saved settings.
40
+
41
+ ## Fixes
42
+
43
+ - A log entry's logged date is shown in the browser's local time zone
44
+ instead of UTC, so entries logged in the morning ahead of UTC no longer
45
+ show the previous day.
46
+
47
+ # v1.6.1
48
+
49
+ Attachments open in the browser when the browser can show them.
50
+
51
+ - Images, PDFs, plain text, audio and video are now served inline under
52
+ their declared type, so clicking one opens it in a new tab instead of
53
+ forcing a download. Anything XML- or HTML-shaped (SVG included) stays an
54
+ attachment, since it can carry script, and so does anything the browser
55
+ can't render anyway. `nosniff` is kept in both cases, so the declared type
56
+ is the only type and nothing uploaded runs on the SignalK origin.
57
+ - The task detail page gains a **Gallery** section: image attachments move
58
+ out of the Files list into a grid of thumbnails that open the full image
59
+ in a new tab. Either section is dropped when empty.
60
+
1
61
  # v1.6.0
2
62
 
3
63
  Tasks can now carry files, and the detail page shows whether the parts for a
package/README.md CHANGED
@@ -58,8 +58,8 @@ Tracker**; data is stored in the plugin's data directory as `maintenance.db`.
58
58
  | `enablePublishPaths` | `true` | publish each task to `maintenance.{slug}.*` paths |
59
59
  | `enableNotifications` | `true` | master switch for notification publishing |
60
60
  | `alarmStateOk` | `none` | alarm state for up-to-date tasks |
61
- | `alarmStateDueSoon` | `warn` | alarm state for due-soon tasks |
62
- | `alarmStateOverdue` | `alarm` | alarm state for overdue tasks |
61
+ | `alarmStateDueSoon` | `alert` | alarm state for due-soon tasks |
62
+ | `alarmStateOverdue` | `warn` | alarm state for overdue tasks |
63
63
  | `runtimeNotifyLeadHours` | `10` | runtime hours before due to raise "due soon" |
64
64
  | `timeNotifyLeadDays` | `7` | days before due to raise "due soon" |
65
65
  | `recomputeIntervalMs` | `60000` | status recompute tick in ms |
@@ -96,8 +96,14 @@ the SignalK server — currently admin):
96
96
  - `GET/POST /tasks/:slug/logs` (POST = mark complete)
97
97
  - `GET/POST /tasks/:slug/files`, `GET/DELETE /tasks/:slug/files/:id`
98
98
  (attachments: POST streams the raw request body to disk, any type up to
99
- 1 GB, with the filename in an `X-File-Name` header)
99
+ 1 GB, with the filename in an `X-File-Name` header; images, PDFs, text
100
+ and media are served inline and open in the browser, images also as a
101
+ gallery on the task page; everything else downloads)
100
102
  - `GET /logs`, `PUT/DELETE /logs/:id`
103
+ - `GET/POST /logs/:id/files`, `GET/DELETE /logs/:id/files/:fileId` (the same
104
+ attachment protocol for a log entry — photos of the work, receipts —
105
+ picked when marking a task complete or editing an entry; each entry's
106
+ `files` ride on the log responses)
101
107
  - `GET /tags`
102
108
  - `GET /health`
103
109
 
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mountApi = mountApi;
4
4
  const auth_1 = require("../auth");
5
+ const store_1 = require("../files/store");
5
6
  const service_1 = require("../service");
6
7
  /** Cookie/authorization headers from the incoming request, forwarded
7
8
  * verbatim when we call out to signalk-stowage-mgmt on the caller's behalf
@@ -85,34 +86,33 @@ function mountApi(router, getServices) {
85
86
  // values are ASCII) and the client's content type in X-File-Type. No
86
87
  // multipart parsing, no buffering — the body streams straight to disk.
87
88
  router.post('/api/tasks/:slug/files', withServices(async (s, req, res) => {
88
- // A JSON content type gets the body parsed (by SignalK or jsonBody)
89
- // before it reaches here, leaving nothing to stream to disk. Checked
90
- // by stream state, not req.body: body-parser 1.x sets req.body = {}
91
- // even on requests it skips.
92
- if (req.readableEnded || req._body)
93
- throw new service_1.ApiError(400, 'invalid_upload', 'Send the file bytes as the raw request body with a non-JSON content type (e.g. application/octet-stream)');
94
- const length = req.headers['content-length'];
95
- if (length === undefined)
96
- throw new service_1.ApiError(411, 'length_required', 'Uploads must send a Content-Length header');
97
- const file = await s.service.addFile(req.params.slug, {
98
- name: decodeHeader(req.headers['x-file-name']),
99
- mime: str(req.headers['x-file-type']) ?? null,
100
- declaredSize: Number.parseInt(String(length), 10) || 0,
101
- }, req);
89
+ const file = await s.service.addFile(req.params.slug, uploadFromRequest(req), req);
102
90
  res.status(201).json(file);
103
91
  }));
104
92
  router.get('/api/tasks/:slug/files/:id', withServices((s, req, res) => {
105
93
  const { file, absPath } = s.service.getFile(req.params.slug, intParam(req.params.id));
106
- // Always an attachment: a file is never rendered inline on the server's
107
- // origin, whatever the uploader called it.
108
- res.download(absPath, file.name, {
109
- headers: { 'X-Content-Type-Options': 'nosniff' },
110
- });
94
+ sendAttachment(res, file, absPath);
111
95
  }));
112
96
  router.delete('/api/tasks/:slug/files/:id', withServices((s, req, res) => {
113
97
  s.service.deleteFile(req.params.slug, intParam(req.params.id));
114
98
  res.status(204).end();
115
99
  }));
100
+ // ---- log entry files (§8.6) — same protocol, hung off a log entry ----
101
+ router.get('/api/logs/:id/files', withServices((s, req, res) => {
102
+ res.json({ data: s.service.listLogFiles(intParam(req.params.id)) });
103
+ }));
104
+ router.post('/api/logs/:id/files', withServices(async (s, req, res) => {
105
+ const file = await s.service.addLogFile(intParam(req.params.id), uploadFromRequest(req), req);
106
+ res.status(201).json(file);
107
+ }));
108
+ router.get('/api/logs/:id/files/:fileId', withServices((s, req, res) => {
109
+ const { file, absPath } = s.service.getLogFile(intParam(req.params.id), intParam(req.params.fileId));
110
+ sendAttachment(res, file, absPath);
111
+ }));
112
+ router.delete('/api/logs/:id/files/:fileId', withServices((s, req, res) => {
113
+ s.service.deleteLogFile(intParam(req.params.id), intParam(req.params.fileId));
114
+ res.status(204).end();
115
+ }));
116
116
  // ---- logs (§8.2) ----
117
117
  router.get('/api/tasks/:slug/logs', withServices((s, req, res) => {
118
118
  res.json({ data: s.service.listTaskLogs(req.params.slug) });
@@ -204,6 +204,49 @@ function jsonBody(req, res, next) {
204
204
  }
205
205
  });
206
206
  }
207
+ /**
208
+ * What the service needs to know about an upload before its bytes, from the
209
+ * request headers — and the checks that the body really is still a stream
210
+ * of bytes for it to read.
211
+ */
212
+ function uploadFromRequest(req) {
213
+ // A JSON content type gets the body parsed (by SignalK or jsonBody)
214
+ // before it reaches here, leaving nothing to stream to disk. Checked
215
+ // by stream state, not req.body: body-parser 1.x sets req.body = {}
216
+ // even on requests it skips.
217
+ if (req.readableEnded || req._body)
218
+ throw new service_1.ApiError(400, 'invalid_upload', 'Send the file bytes as the raw request body with a non-JSON content type (e.g. application/octet-stream)');
219
+ const length = req.headers['content-length'];
220
+ if (length === undefined)
221
+ throw new service_1.ApiError(411, 'length_required', 'Uploads must send a Content-Length header');
222
+ return {
223
+ name: decodeHeader(req.headers['x-file-name']),
224
+ mime: str(req.headers['x-file-type']) ?? null,
225
+ declaredSize: Number.parseInt(String(length), 10) || 0,
226
+ };
227
+ }
228
+ /**
229
+ * Serve an attachment's bytes. What a browser can show on its own (images,
230
+ * PDF, text, media) is served inline so links open in a tab; everything
231
+ * else is an attachment, whatever the uploader called it, so no uploaded
232
+ * document ever runs on the server's origin. nosniff in both cases: the
233
+ * declared type is the only type.
234
+ */
235
+ function sendAttachment(res, file, absPath) {
236
+ if ((0, store_1.isInlineType)(file.mime)) {
237
+ res.type(file.mime);
238
+ res.sendFile(absPath, {
239
+ headers: {
240
+ 'Content-Disposition': inlineDisposition(file.name),
241
+ 'X-Content-Type-Options': 'nosniff',
242
+ },
243
+ });
244
+ return;
245
+ }
246
+ res.download(absPath, file.name, {
247
+ headers: { 'X-Content-Type-Options': 'nosniff' },
248
+ });
249
+ }
207
250
  /** True for a body that is a file, not JSON (see the upload route). */
208
251
  function isRawUpload(req) {
209
252
  const type = req.headers['content-type'];
@@ -242,6 +285,17 @@ function parseTaskListQuery(req) {
242
285
  function parsePaging(req) {
243
286
  return { page: int(req.query.page), pageSize: int(req.query.pageSize) };
244
287
  }
288
+ /**
289
+ * `Content-Disposition: inline` carrying the original name for "save as"
290
+ * (RFC 6266): an ASCII fallback plus the UTF-8 form for non-ASCII names.
291
+ */
292
+ function inlineDisposition(name) {
293
+ const ascii = name.replace(/[^\x20-\x7e]/g, '_').replace(/["\\]/g, '_');
294
+ let header = 'inline; filename="' + ascii + '"';
295
+ if (ascii !== name)
296
+ header += "; filename*=UTF-8''" + encodeURIComponent(name);
297
+ return header;
298
+ }
245
299
  function str(v) {
246
300
  return typeof v === 'string' && v !== '' ? v : undefined;
247
301
  }
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -14,8 +14,8 @@ exports.DEFAULT_OPTIONS = {
14
14
  enablePublishPaths: true,
15
15
  enableNotifications: true,
16
16
  alarmStateOk: 'none',
17
- alarmStateDueSoon: 'warn',
18
- alarmStateOverdue: 'alarm',
17
+ alarmStateDueSoon: 'alert',
18
+ alarmStateOverdue: 'warn',
19
19
  runtimeNotifyLeadHours: 10,
20
20
  timeNotifyLeadDays: 7,
21
21
  recomputeIntervalMs: 60000,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAyCA,oCAEC;AAvCD,MAAM,YAAY,GAAiB;IACjC,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,WAAW;CACZ,CAAC;AAkBW,QAAA,eAAe,GAAkB;IAC5C,kBAAkB,EAAE,IAAI;IACxB,mBAAmB,EAAE,IAAI;IACzB,YAAY,EAAE,MAAM;IACpB,iBAAiB,EAAE,MAAM;IACzB,iBAAiB,EAAE,OAAO;IAC1B,sBAAsB,EAAE,EAAE;IAC1B,kBAAkB,EAAE,CAAC;IACrB,mBAAmB,EAAE,KAAK;IAC1B,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF,SAAgB,YAAY,CAAC,OAAgC;IAC3D,OAAO,EAAE,GAAG,uBAAe,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,YAAwB,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,QAAQ;IACd,KAAK;IACL,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC;IACvB,OAAO,EAAE,YAAY;CACtB,CAAC,CAAC;AAEU,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,kBAAkB,EAAE;YAClB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,oCAAoC;YAC3C,WAAW,EACT,0FAA0F;YAC5F,OAAO,EAAE,uBAAe,CAAC,kBAAkB;SAC5C;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,gEAAgE;YAClE,OAAO,EAAE,uBAAe,CAAC,mBAAmB;SAC7C;QACD,YAAY,EAAE,kBAAkB,CAC9B,kCAAkC,EAClC,uBAAe,CAAC,YAAY,CAC7B;QACD,iBAAiB,EAAE,kBAAkB,CACnC,gCAAgC,EAChC,uBAAe,CAAC,iBAAiB,CAClC;QACD,iBAAiB,EAAE,kBAAkB,CACnC,+BAA+B,EAC/B,uBAAe,CAAC,iBAAiB,CAClC;QACD,sBAAsB,EAAE;YACtB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,6BAA6B;YACpC,OAAO,EAAE,CAAC;YACV,WAAW,EACT,gKAAgK;YAClK,OAAO,EAAE,uBAAe,CAAC,sBAAsB;SAChD;QACD,kBAAkB,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE,CAAC;YACV,WAAW,EACT,uJAAuJ;YACzJ,OAAO,EAAE,uBAAe,CAAC,kBAAkB;SAC5C;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,yBAAyB;YAChC,WAAW,EACT,gEAAgE;YAClE,OAAO,EAAE,uBAAe,CAAC,mBAAmB;SAC7C;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,8BAA8B;YACrC,WAAW,EACT,6JAA6J;YAC/J,OAAO,EAAE,uBAAe,CAAC,cAAc;SACxC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAyCA,oCAEC;AAvCD,MAAM,YAAY,GAAiB;IACjC,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,WAAW;CACZ,CAAC;AAkBW,QAAA,eAAe,GAAkB;IAC5C,kBAAkB,EAAE,IAAI;IACxB,mBAAmB,EAAE,IAAI;IACzB,YAAY,EAAE,MAAM;IACpB,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,MAAM;IACzB,sBAAsB,EAAE,EAAE;IAC1B,kBAAkB,EAAE,CAAC;IACrB,mBAAmB,EAAE,KAAK;IAC1B,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF,SAAgB,YAAY,CAAC,OAAgC;IAC3D,OAAO,EAAE,GAAG,uBAAe,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,YAAwB,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,QAAQ;IACd,KAAK;IACL,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC;IACvB,OAAO,EAAE,YAAY;CACtB,CAAC,CAAC;AAEU,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,kBAAkB,EAAE;YAClB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,oCAAoC;YAC3C,WAAW,EACT,0FAA0F;YAC5F,OAAO,EAAE,uBAAe,CAAC,kBAAkB;SAC5C;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,gEAAgE;YAClE,OAAO,EAAE,uBAAe,CAAC,mBAAmB;SAC7C;QACD,YAAY,EAAE,kBAAkB,CAC9B,kCAAkC,EAClC,uBAAe,CAAC,YAAY,CAC7B;QACD,iBAAiB,EAAE,kBAAkB,CACnC,gCAAgC,EAChC,uBAAe,CAAC,iBAAiB,CAClC;QACD,iBAAiB,EAAE,kBAAkB,CACnC,+BAA+B,EAC/B,uBAAe,CAAC,iBAAiB,CAClC;QACD,sBAAsB,EAAE;YACtB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,6BAA6B;YACpC,OAAO,EAAE,CAAC;YACV,WAAW,EACT,gKAAgK;YAClK,OAAO,EAAE,uBAAe,CAAC,sBAAsB;SAChD;QACD,kBAAkB,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE,CAAC;YACV,WAAW,EACT,uJAAuJ;YACzJ,OAAO,EAAE,uBAAe,CAAC,kBAAkB;SAC5C;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,yBAAyB;YAChC,WAAW,EACT,gEAAgE;YAClE,OAAO,EAAE,uBAAe,CAAC,mBAAmB;SAC7C;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,8BAA8B;YACrC,WAAW,EACT,6JAA6J;YAC/J,OAAO,EAAE,uBAAe,CAAC,cAAc;SACxC;KACF;CACF,CAAC"}
@@ -1,46 +1,88 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FilesRepo = void 0;
4
- const FILE_COLUMNS = `id, task_id, name, size, mime, path, created_at`;
5
- class FilesRepo {
3
+ exports.LogFilesRepo = exports.FilesRepo = void 0;
4
+ /**
5
+ * The two attachment tables are the same shape apart from what they hang
6
+ * off (a task or a log entry); this is the shared index access, with the
7
+ * table and owner column fixed per subclass.
8
+ */
9
+ class AttachmentsRepo {
6
10
  db;
7
- constructor(db) {
11
+ table;
12
+ ownerColumn;
13
+ columns;
14
+ constructor(db, table, ownerColumn) {
8
15
  this.db = db;
16
+ this.table = table;
17
+ this.ownerColumn = ownerColumn;
18
+ this.columns = `id, ${ownerColumn}, name, size, mime, path, created_at`;
9
19
  }
10
20
  get(id) {
11
21
  return this.db
12
- .prepare(`SELECT ${FILE_COLUMNS} FROM task_files WHERE id = ?`)
22
+ .prepare(`SELECT ${this.columns} FROM ${this.table} WHERE id = ?`)
13
23
  .get(id);
14
24
  }
15
- forTask(taskId) {
25
+ forOwner(ownerId) {
16
26
  return this.db
17
- .prepare(`SELECT ${FILE_COLUMNS} FROM task_files
18
- WHERE task_id = ? ORDER BY name COLLATE NOCASE, id`)
19
- .all(taskId);
27
+ .prepare(`SELECT ${this.columns} FROM ${this.table}
28
+ WHERE ${this.ownerColumn} = ? ORDER BY name COLLATE NOCASE, id`)
29
+ .all(ownerId);
20
30
  }
21
- /** One query for the whole task list: task_id -> files. */
22
- byTask() {
31
+ /** One query for a whole list: owner id -> files. */
32
+ byOwner() {
23
33
  const rows = this.db
24
- .prepare(`SELECT ${FILE_COLUMNS} FROM task_files ORDER BY name COLLATE NOCASE, id`)
34
+ .prepare(`SELECT ${this.columns} FROM ${this.table} ORDER BY name COLLATE NOCASE, id`)
25
35
  .all();
26
36
  const map = new Map();
27
37
  for (const r of rows) {
28
- const list = map.get(r.task_id) ?? [];
38
+ const owner = r[this.ownerColumn];
39
+ const list = map.get(owner) ?? [];
29
40
  list.push(r);
30
- map.set(r.task_id, list);
41
+ map.set(owner, list);
31
42
  }
32
43
  return map;
33
44
  }
34
- insert(f, nowIso) {
45
+ insertFor(ownerId, f, nowIso) {
35
46
  const result = this.db
36
- .prepare(`INSERT INTO task_files (task_id, name, size, mime, path, created_at)
47
+ .prepare(`INSERT INTO ${this.table} (${this.ownerColumn}, name, size, mime, path, created_at)
37
48
  VALUES (?, ?, ?, ?, ?, ?)`)
38
- .run(f.task_id, f.name, f.size, f.mime, f.path, nowIso);
49
+ .run(ownerId, f.name, f.size, f.mime, f.path, nowIso);
39
50
  return this.get(Number(result.lastInsertRowid));
40
51
  }
41
52
  delete(id) {
42
- this.db.prepare(`DELETE FROM task_files WHERE id = ?`).run(id);
53
+ this.db.prepare(`DELETE FROM ${this.table} WHERE id = ?`).run(id);
54
+ }
55
+ }
56
+ class FilesRepo extends AttachmentsRepo {
57
+ constructor(db) {
58
+ super(db, 'task_files', 'task_id');
59
+ }
60
+ forTask(taskId) {
61
+ return this.forOwner(taskId);
62
+ }
63
+ /** One query for the whole task list: task_id -> files. */
64
+ byTask() {
65
+ return this.byOwner();
66
+ }
67
+ insert(f, nowIso) {
68
+ return this.insertFor(f.task_id, f, nowIso);
43
69
  }
44
70
  }
45
71
  exports.FilesRepo = FilesRepo;
72
+ class LogFilesRepo extends AttachmentsRepo {
73
+ constructor(db) {
74
+ super(db, 'log_files', 'log_id');
75
+ }
76
+ forLog(logId) {
77
+ return this.forOwner(logId);
78
+ }
79
+ /** One query for a whole log listing: log_id -> files. */
80
+ byLog() {
81
+ return this.byOwner();
82
+ }
83
+ insert(f, nowIso) {
84
+ return this.insertFor(f.log_id, f, nowIso);
85
+ }
86
+ }
87
+ exports.LogFilesRepo = LogFilesRepo;
46
88
  //# sourceMappingURL=files.repo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"files.repo.js","sourceRoot":"","sources":["../../src/db/files.repo.ts"],"names":[],"mappings":";;;AAuBA,MAAM,YAAY,GAAG,iDAAiD,CAAC;AAEvE,MAAa,SAAS;IACA;IAApB,YAAoB,EAAgB;QAAhB,OAAE,GAAF,EAAE,CAAc;IAAG,CAAC;IAExC,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CAAC,UAAU,YAAY,+BAA+B,CAAC;aAC9D,GAAG,CAAC,EAAE,CAAwB,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN,UAAU,YAAY;4DAC8B,CACrD;aACA,GAAG,CAAC,MAAM,CAAyB,CAAC;IACzC,CAAC;IAED,2DAA2D;IAC3D,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN,UAAU,YAAY,mDAAmD,CAC1E;aACA,GAAG,EAA0B,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,CAAU,EAAE,MAAc;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;mCAC2B,CAC5B;aACA,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAE,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;CACF;AA/CD,8BA+CC"}
1
+ {"version":3,"file":"files.repo.js","sourceRoot":"","sources":["../../src/db/files.repo.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LogsRepo = void 0;
4
4
  const LOG_COLUMNS = `l.id, l.task_id, l.title, l.maintenance_date, l.runtime_hours, l.notes,
5
- l.logged_by, l.created_at`;
5
+ l.logged_by, l.created_at, l.updated_at`;
6
6
  class LogsRepo {
7
7
  db;
8
8
  constructor(db) {
@@ -22,8 +22,8 @@ class LogsRepo {
22
22
  }
23
23
  update(id, fields) {
24
24
  this.db
25
- .prepare(`UPDATE log_entries SET title = ?, maintenance_date = ?, runtime_hours = ?, notes = ? WHERE id = ?`)
26
- .run(fields.title, fields.maintenance_date, fields.runtime_hours, fields.notes, id);
25
+ .prepare(`UPDATE log_entries SET title = ?, maintenance_date = ?, runtime_hours = ?, notes = ?, updated_at = ? WHERE id = ?`)
26
+ .run(fields.title, fields.maintenance_date, fields.runtime_hours, fields.notes, fields.updated_at, id);
27
27
  }
28
28
  delete(id) {
29
29
  this.db.prepare(`DELETE FROM log_entries WHERE id = ?`).run(id);
@@ -1 +1 @@
1
- {"version":3,"file":"logs.repo.js","sourceRoot":"","sources":["../../src/db/logs.repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.repo.js","sourceRoot":"","sources":["../../src/db/logs.repo.ts"],"names":[],"mappings":"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"}
@@ -176,5 +176,34 @@ exports.migrations = [
176
176
  `);
177
177
  },
178
178
  },
179
+ {
180
+ version: 9,
181
+ up(db) {
182
+ // Files attached to a log entry (photos of the work, receipts for that
183
+ // service). Same shape as task_files, keyed by the entry; bytes live
184
+ // under files/logs/<log_id>/. Rows cascade with the entry (and so with
185
+ // the task); the service removes the bytes alongside.
186
+ db.exec(`
187
+ CREATE TABLE log_files (
188
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
189
+ log_id INTEGER NOT NULL REFERENCES log_entries(id) ON DELETE CASCADE,
190
+ name TEXT NOT NULL,
191
+ size INTEGER NOT NULL,
192
+ mime TEXT,
193
+ path TEXT NOT NULL UNIQUE,
194
+ created_at TEXT NOT NULL
195
+ );
196
+ CREATE INDEX idx_log_files_log ON log_files (log_id);
197
+ `);
198
+ },
199
+ },
200
+ {
201
+ version: 10,
202
+ up(db) {
203
+ // When a log entry was last edited. Null until an edit actually
204
+ // changes something, so "never edited" needs no separate flag.
205
+ db.exec(`ALTER TABLE log_entries ADD COLUMN updated_at TEXT;`);
206
+ },
207
+ },
179
208
  ];
180
209
  //# sourceMappingURL=migrations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":";;;AAOa,QAAA,UAAU,GAAgB;IACrC;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;OAmBP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,qEAAqE;YACrE,yEAAyE;YACzE,8CAA8C;YAC9C,EAAE,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QACzD,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,uEAAuE;YACvE,yEAAyE;YACzE,mEAAmE;YACnE,wEAAwE;YACxE,wEAAwE;YACxE,EAAE,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACpE,EAAE,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QAClE,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,mEAAmE;YACnE,mEAAmE;YACnE,kEAAkE;YAClE,EAAE,CAAC,IAAI,CACL,sEAAsE,CACvE,CAAC;QACJ,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,uEAAuE;YACvE,wEAAwE;YACxE,uEAAuE;YACvE,sEAAsE;YACtE,uDAAuD;YACvD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;OAmBP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,sEAAsE;YACtE,oEAAoE;YACpE,mEAAmE;YACnE,mEAAmE;YACnE,8CAA8C;YAC9C,EAAE,CAAC,IAAI,CACL,uEAAuE,CACxE,CAAC;YACF,EAAE,CAAC,IAAI,CAAC;;;;OAIP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,uEAAuE;YACvE,sEAAsE;YACtE,gEAAgE;YAChE,+DAA+D;YAC/D,uCAAuC;YACvC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;OAWP,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":";;;AAOa,QAAA,UAAU,GAAgB;IACrC;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;OAmBP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,qEAAqE;YACrE,yEAAyE;YACzE,8CAA8C;YAC9C,EAAE,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QACzD,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,uEAAuE;YACvE,yEAAyE;YACzE,mEAAmE;YACnE,wEAAwE;YACxE,wEAAwE;YACxE,EAAE,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACpE,EAAE,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QAClE,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,mEAAmE;YACnE,mEAAmE;YACnE,kEAAkE;YAClE,EAAE,CAAC,IAAI,CACL,sEAAsE,CACvE,CAAC;QACJ,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,uEAAuE;YACvE,wEAAwE;YACxE,uEAAuE;YACvE,sEAAsE;YACtE,uDAAuD;YACvD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;OAmBP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,sEAAsE;YACtE,oEAAoE;YACpE,mEAAmE;YACnE,mEAAmE;YACnE,8CAA8C;YAC9C,EAAE,CAAC,IAAI,CACL,uEAAuE,CACxE,CAAC;YACF,EAAE,CAAC,IAAI,CAAC;;;;OAIP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,uEAAuE;YACvE,sEAAsE;YACtE,gEAAgE;YAChE,+DAA+D;YAC/D,uCAAuC;YACvC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;OAWP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,CAAC,EAAE;YACH,uEAAuE;YACvE,qEAAqE;YACrE,uEAAuE;YACvE,sDAAsD;YACtD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;OAWP,CAAC,CAAC;QACL,CAAC;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,EAAE,CAAC,EAAE;YACH,gEAAgE;YAChE,+DAA+D;YAC/D,EAAE,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACjE,CAAC;KACF;CACF,CAAC"}
@@ -34,11 +34,42 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.FileStore = exports.FileTooLargeError = exports.MAX_FILE_BYTES = void 0;
37
+ exports.isInlineType = isInlineType;
38
+ exports.isInlineImage = isInlineImage;
37
39
  const crypto = __importStar(require("node:crypto"));
38
40
  const fs = __importStar(require("node:fs"));
39
41
  const path = __importStar(require("node:path"));
40
42
  /** Largest single upload accepted: 1 GiB. */
41
43
  exports.MAX_FILE_BYTES = 1024 * 1024 * 1024;
44
+ /**
45
+ * Whether a file of this (uploader-declared) type may be served inline, i.e.
46
+ * rendered by the browser on the server's origin rather than saved. Only
47
+ * what browsers display natively and that carries no script: raster images,
48
+ * PDF, plain text, audio and video. SVG and anything XML/HTML-shaped are
49
+ * documents that can run script, so they stay downloads whatever the label.
50
+ * Anything else (Word, spreadsheets, archives…) the browser would download
51
+ * anyway.
52
+ */
53
+ function isInlineType(mime) {
54
+ const t = normalizeMime(mime);
55
+ if (t === null || /xml|html/.test(t))
56
+ return false;
57
+ if (t === 'application/pdf' || t === 'text/plain')
58
+ return true;
59
+ return /^(image|audio|video)\//.test(t);
60
+ }
61
+ /** Whether a file of this type is a raster image: inline, and a picture. */
62
+ function isInlineImage(mime) {
63
+ const t = normalizeMime(mime);
64
+ return t !== null && t.startsWith('image/') && isInlineType(t);
65
+ }
66
+ /** The bare `type/subtype`, lowercased, or null when absent. */
67
+ function normalizeMime(mime) {
68
+ if (!mime)
69
+ return null;
70
+ const t = mime.split(';')[0].trim().toLowerCase();
71
+ return t.includes('/') ? t : null;
72
+ }
42
73
  /** Thrown by write() when the stream runs past `maxBytes`. */
43
74
  class FileTooLargeError extends Error {
44
75
  maxBytes;
@@ -49,18 +80,28 @@ class FileTooLargeError extends Error {
49
80
  }
50
81
  exports.FileTooLargeError = FileTooLargeError;
51
82
  /**
52
- * On-disk home for task attachments: `<root>/<task_id>/<token>-<name>`, with
53
- * `<root>` under the plugin data directory. The database row (FilesRepo)
54
- * holds the path relative to `<root>`, so the data directory can move as a
55
- * whole. Uploads stream into `<root>/tmp` and are renamed into place only
56
- * once fully written, so a crash or an over-limit upload never leaves a
57
- * half-file where a task would find it.
83
+ * On-disk home for attachments, with `<root>` under the plugin data
84
+ * directory: a task's files at `<root>/<task_id>/<token>-<name>`, a log
85
+ * entry's at `<root>/logs/<log_id>/<token>-<name>` (task directories are
86
+ * numeric, so `logs` can't collide). The database row (FilesRepo /
87
+ * LogFilesRepo) holds the path relative to `<root>`, so the data directory
88
+ * can move as a whole. Uploads stream into `<root>/tmp` and are renamed into
89
+ * place only once fully written, so a crash or an over-limit upload never
90
+ * leaves a half-file where an owner would find it.
58
91
  */
59
92
  class FileStore {
60
93
  root;
61
94
  constructor(root) {
62
95
  this.root = root;
63
96
  }
97
+ /** Where a task's files live, relative to the root. */
98
+ static taskDir(taskId) {
99
+ return String(taskId);
100
+ }
101
+ /** Where a log entry's files live, relative to the root. */
102
+ static logDir(logId) {
103
+ return path.join('logs', String(logId));
104
+ }
64
105
  absolute(relPath) {
65
106
  return path.join(this.root, relPath);
66
107
  }
@@ -106,10 +147,13 @@ class FileStore {
106
147
  source.pipe(out);
107
148
  });
108
149
  }
109
- /** Move a finished temp file under its task; returns the relative path. */
110
- commit(tmpPath, taskId, name) {
150
+ /**
151
+ * Move a finished temp file under its owner's directory (taskDir / logDir,
152
+ * relative to the root); returns the relative path.
153
+ */
154
+ commit(tmpPath, dir, name) {
111
155
  const token = crypto.randomBytes(4).toString('hex');
112
- const relPath = path.join(String(taskId), `${token}-${safeName(name)}`);
156
+ const relPath = path.join(dir, `${token}-${safeName(name)}`);
113
157
  const dest = this.absolute(relPath);
114
158
  fs.mkdirSync(path.dirname(dest), { recursive: true });
115
159
  fs.renameSync(tmpPath, dest);
@@ -123,10 +167,14 @@ class FileStore {
123
167
  }
124
168
  /** Drop a task's whole directory (task deleted). */
125
169
  removeTask(taskId) {
126
- fs.rmSync(path.join(this.root, String(taskId)), {
127
- recursive: true,
128
- force: true,
129
- });
170
+ this.removeDir(FileStore.taskDir(taskId));
171
+ }
172
+ /** Drop a log entry's whole directory (entry deleted). */
173
+ removeLog(logId) {
174
+ this.removeDir(FileStore.logDir(logId));
175
+ }
176
+ removeDir(dir) {
177
+ fs.rmSync(this.absolute(dir), { recursive: true, force: true });
130
178
  }
131
179
  }
132
180
  exports.FileStore = FileStore;
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/files/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/files/store.ts"],"names":[],"mappings":"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"}