nntrivi2001
c356cf96a1
fix(artifacts): a page published from its session's scratchpad keeps a viewable copy
...
The Artifact tool writes a page into the session's own Claude Code
scratchpad by default (<tmp>/claude-<uid>/<project>/<session>/scratchpad),
but pageCopy took the file only from the workspace folder, so such a page
got no copy and Preview said "the file ... is gone" while it was still there.
pageCopy now also accepts that ONE scratchpad, named from the publishing
session's id, its cwd and the workspace account's uid; before reading,
each of its four folders must be a real directory of that account, and each
file is realpath-confined, opened O_NOFOLLOW and must be a regular file of
that uid. Supporting files come only from the page's own root. The older-
page backfill (POST /api/artifacts/:id/copy) uses the session's cwd too.
The noCopy message now says the file may also lie outside both.
2026-11-05 11:20:34 +07:00
..
2026-09-18 16:52:05 +07:00
2026-10-28 10:41:53 +07:00
2026-10-26 08:32:45 +07:00
2026-11-03 10:50:53 +07:00
2026-11-04 15:16:49 +07:00
2026-10-01 13:39:17 +07:00
2026-09-29 08:25:37 +07:00
2026-10-26 11:18:05 +07:00
2026-10-01 13:39:17 +07:00
2026-10-20 16:44:55 +07:00
2026-09-29 08:25:37 +07:00
2026-10-23 16:41:45 +07:00
2026-11-04 15:16:49 +07:00
2026-09-29 16:09:19 +07:00
2026-09-29 16:09:19 +07:00
2026-10-21 15:44:17 +07:00
2026-09-07 12:09:15 +07:00
2026-11-05 11:20:34 +07:00
2026-10-22 10:04:30 +07:00
2026-11-04 15:16:49 +07:00
2026-10-08 12:22:14 +07:00
2026-10-22 14:34:50 +07:00
2026-10-22 14:34:50 +07:00
2026-10-22 14:34:50 +07:00
2026-10-16 10:20:09 +07:00
2026-10-07 14:11:25 +07:00
2026-10-26 14:22:41 +07:00
2026-10-26 14:22:41 +07:00
2026-10-26 14:22:41 +07:00
2026-10-26 14:22:41 +07:00
2026-10-28 15:09:30 +07:00
2026-10-26 14:22:41 +07:00
2026-10-26 14:22:41 +07:00
2026-09-10 16:05:07 +07:00
2026-10-28 15:09:30 +07:00
2026-09-07 08:32:19 +07:00
2026-09-07 12:09:15 +07:00
2026-11-05 09:29:58 +07:00
2026-11-04 15:16:49 +07:00
2026-11-02 10:47:51 +07:00
2026-11-02 10:47:51 +07:00
2026-09-09 01:29:17 +07:00
2026-10-09 14:57:10 +07:00
2026-09-29 16:09:19 +07:00
2026-09-29 16:09:19 +07:00
2026-10-09 14:57:10 +07:00
2026-09-09 08:30:45 +07:00
2026-10-30 16:06:20 +07:00
2026-10-28 10:41:53 +07:00
2026-10-08 12:22:14 +07:00
2026-09-09 08:30:45 +07:00
2026-10-28 10:41:53 +07:00
2026-10-21 15:44:17 +07:00
2026-10-14 16:06:54 +07:00
2026-10-06 17:12:28 +07:00
2026-10-21 15:44:17 +07:00
2026-10-08 23:04:57 +07:00
2026-10-16 10:20:38 +07:00
2026-10-26 11:18:05 +07:00
2026-10-09 14:57:10 +07:00
2026-10-06 17:12:28 +07:00
2026-11-02 16:12:57 +07:00
2026-10-26 11:18:05 +07:00
2026-10-09 14:57:10 +07:00
2026-11-02 12:12:45 +07:00
2026-09-25 10:44:40 +07:00
2026-10-14 12:21:55 +07:00
2026-10-30 13:05:13 +07:00
2026-10-09 14:57:10 +07:00
2026-11-02 12:22:46 +07:00
2026-11-02 16:49:27 +07:00
2026-11-04 15:16:49 +07:00
2026-11-02 12:22:46 +07:00
2026-11-02 12:00:55 +07:00
2026-11-02 12:12:45 +07:00
2026-10-19 17:13:26 +07:00
2026-10-09 14:57:10 +07:00
2026-10-29 13:40:28 +07:00
2026-10-14 11:55:53 +07:00
2026-10-19 16:49:59 +07:00
2026-10-09 14:57:10 +07:00
2026-10-26 14:22:41 +07:00
2026-09-07 12:09:15 +07:00
2026-10-01 16:03:24 +07:00
2026-10-14 12:21:55 +07:00
2026-10-09 14:57:10 +07:00
2026-09-07 12:09:15 +07:00
2026-07-30 14:39:03 +07:00
2026-09-25 17:30:28 +07:00
2026-09-18 09:44:17 +07:00
2026-09-07 12:09:15 +07:00
2026-10-01 16:03:24 +07:00
2026-09-07 12:09:15 +07:00
2026-10-01 16:03:24 +07:00
2026-10-16 13:38:09 +07:00
2026-10-01 16:03:24 +07:00
2026-11-02 10:11:47 +07:00
2026-10-15 16:02:11 +07:00
2026-10-27 16:39:38 +07:00
2026-10-09 14:57:10 +07:00
2026-11-03 11:37:13 +07:00
2026-10-15 14:44:47 +07:00
2026-10-07 14:11:25 +07:00
2026-10-12 15:40:51 +07:00
2026-10-23 16:41:45 +07:00
2026-10-26 17:12:02 +07:00
2026-10-28 14:31:11 +07:00
2026-10-19 16:49:59 +07:00
2026-10-14 11:55:53 +07:00
2026-10-14 17:21:33 +07:00
2026-10-26 14:22:41 +07:00
2026-10-23 10:44:11 +07:00
2026-10-22 17:02:08 +07:00
2026-11-04 15:16:49 +07:00
2026-08-04 10:03:40 +07:00
2026-10-08 23:04:57 +07:00
2026-10-08 12:22:14 +07:00
2026-10-06 17:12:28 +07:00
2026-10-26 14:22:41 +07:00
2026-10-01 16:33:25 +07:00
2026-10-26 14:22:41 +07:00
2026-11-04 15:16:49 +07:00
2026-10-14 14:17:39 +07:00
2026-10-26 14:53:29 +07:00
2026-11-04 15:16:49 +07:00
2026-10-06 17:12:28 +07:00
2026-10-07 14:11:25 +07:00
2026-10-09 14:57:10 +07:00
2026-11-04 16:14:27 +07:00
2026-10-07 14:11:25 +07:00
2026-10-16 10:16:54 +07:00
2026-11-04 15:16:49 +07:00
2026-10-06 17:12:28 +07:00
2026-10-06 17:12:28 +07:00
2026-10-26 14:22:41 +07:00
2026-10-07 14:11:25 +07:00
2026-11-04 15:16:49 +07:00
2026-10-07 13:24:15 +07:00
2026-09-07 12:09:15 +07:00
2026-07-30 14:39:03 +07:00
2026-10-16 10:27:22 +07:00
2026-10-26 14:22:41 +07:00
2026-09-10 13:44:28 +07:00
2026-11-04 15:16:49 +07:00
2026-10-07 13:24:15 +07:00
2026-10-02 13:22:29 +07:00
2026-09-29 16:09:19 +07:00
2026-10-09 14:57:10 +07:00
2026-10-07 11:18:10 +07:00
2026-10-07 14:11:25 +07:00
2026-08-28 10:05:24 +07:00
2026-10-23 16:41:45 +07:00
2026-11-04 15:16:49 +07:00
2026-10-08 12:22:14 +07:00
2026-10-29 15:54:20 +07:00
2026-10-09 14:57:10 +07:00
2026-10-21 15:44:17 +07:00
2026-10-08 12:22:14 +07:00
2026-11-04 15:27:48 +07:00
2026-11-02 16:12:57 +07:00
2026-10-28 14:31:11 +07:00
2026-10-14 17:21:33 +07:00
2026-09-07 12:09:15 +07:00
2026-09-07 12:09:15 +07:00
2026-10-06 20:22:34 +07:00
2026-10-09 14:57:10 +07:00
2026-10-08 23:04:57 +07:00
2026-11-02 12:12:45 +07:00
2026-10-26 14:22:41 +07:00