Bohdan Triapitsyn
3e0a9622aa
refactor(server): own the requested project directory in the runtime
...
Drop the canonical-containment 403 guard and the extra realpath(base) the
read routes (stat/read/raw/serve) had gained. Every workspace resolution
returns insideWorkspace: true and outside-file grants use
base = dirname(canonicalPath), so the guard could never fire; the flag had
no remaining reader and is gone with it. The read routes are back to the
single realpath(resolved.resolved) they had before.
Move the lexical-base fallback out of the inline header parsing in
routes.js. x-opencode-directory decoding belongs to
project-directory-runtime, so resolveProjectDirectory now also returns
requestedDirectory, the pre-realpath candidate that validated.
resolveWorkspacePathFromContext retries against it when the canonical base
rejects a path, which keeps files under a symlinked project root
addressable without a second copy of the header/query parsing.
2026-08-29 00:53:06 +03:00
..
2026-07-18 00:11:05 +03:00
2026-06-23 21:52:51 +03:00
2026-08-04 14:40:44 -07:00
2026-08-07 00:25:57 +03:00
2026-08-15 01:59:26 +03:00
2026-08-15 01:59:26 +03:00
2026-06-02 00:43:05 +03:00
2026-06-02 00:43:05 +03:00
2026-06-26 19:27:53 +03:00
2026-08-03 06:40:01 +00:00
2026-08-03 12:03:37 +00:00
2026-08-03 06:56:38 +00:00
2026-08-13 22:44:13 +03:00
2026-08-13 22:44:13 +03:00
2026-08-21 16:25:51 +03:00
2026-08-05 11:24:14 +03:00
2026-08-05 11:24:14 +03:00
2026-08-28 23:23:16 +03:00
2026-08-28 23:23:16 +03:00
2026-08-20 01:40:10 +03:00
2026-06-11 01:06:25 +03:00
2026-06-11 01:06:25 +03:00
2026-08-28 01:27:32 +03:00
2026-08-28 01:27:32 +03:00
2026-08-28 02:08:09 +03:00
2026-08-28 02:08:09 +03:00
2026-08-28 02:08:09 +03:00
2026-08-10 20:23:45 +03:00
2026-04-21 20:46:51 +03:00
2026-07-05 23:19:10 +03:00
2026-07-07 19:49:11 +03:00
2026-07-07 19:49:11 +03:00
2026-06-26 19:27:53 +03:00
2026-05-25 19:20:04 +03:00
2026-08-07 00:10:29 +03:00
2026-08-07 00:10:29 +03:00
2026-04-11 22:29:09 +03:00
2026-06-20 09:35:11 +01:00
2026-04-26 16:24:07 +03:00
2026-08-03 06:40:01 +00:00
2026-08-03 06:40:01 +00:00
2026-05-25 19:20:04 +03:00
2026-05-25 19:20:04 +03:00
2026-08-15 06:30:36 +00:00
2026-08-15 06:30:36 +00:00
2026-08-29 00:53:06 +03:00
2026-08-29 00:53:06 +03:00
2026-05-12 11:10:39 +03:00
2026-05-12 11:10:39 +03:00
2026-08-03 13:57:05 +00:00
2026-08-03 13:18:27 +00:00
2026-08-03 13:18:27 +00:00
2026-08-20 18:39:13 +03:00
2026-08-20 18:39:13 +03:00
2026-08-17 23:44:38 +03:00
2026-08-17 23:44:38 +03:00
2026-08-17 23:44:38 +03:00
2026-07-12 19:54:35 -07:00
2026-05-13 10:35:12 +03:00
2026-08-19 11:53:30 +03:00
2026-08-10 16:10:03 +03:00
2026-08-28 18:48:27 +03:00
2026-08-28 18:48:27 +03:00
2026-08-14 12:45:35 +03:00
2026-08-14 12:45:35 +03:00
2026-07-29 17:26:11 +03:00
2026-06-05 13:36:39 +03:00
2026-08-19 11:53:30 +03:00
2026-08-19 11:53:30 +03:00
2026-08-27 23:14:04 +03:00
2026-08-27 23:14:04 +03:00
2026-08-22 20:31:31 +03:00
2026-08-22 20:31:31 +03:00
2026-08-22 11:55:38 +03:00
2026-08-22 11:55:38 +03:00
2026-08-17 16:44:17 +03:00
2026-08-17 16:44:17 +03:00
2026-07-17 10:30:45 +03:00
2026-05-12 11:00:45 +03:00
2026-08-20 01:40:10 +03:00
2026-08-20 01:40:10 +03:00
2026-08-03 09:25:25 +00:00
2026-08-03 09:55:56 +00:00
2026-06-26 19:27:53 +03:00
2026-05-23 20:51:45 +03:00
2026-07-31 12:51:15 +03:00
2026-07-31 12:51:15 +03:00
2026-07-31 12:51:15 +03:00
2026-07-24 21:54:28 +03:00
2026-06-02 00:43:05 +03:00
2026-06-02 00:43:05 +03:00
2026-06-30 18:41:07 +05:30
2026-06-30 18:41:07 +05:30
2026-07-12 00:46:41 +03:00
2026-03-31 18:47:00 +03:00
2026-07-30 20:07:08 +03:00
2026-07-29 19:59:41 +03:00
2026-04-24 12:30:11 +03:00
2026-04-24 12:30:11 +03:00