Commit eec91fd
fix(workspace): a project with no git does not publish from
Ralph's one open item on the re-review, traced independently by CodeRabbit
and Codex. `Project.fromDirectory` sets the worktree to the sentinel `/`
for a project with no git; `workdir(api)` returned it unchanged, so the
TUI's containment boundary was `/` and any discovered skill on the machine
passed. The TUI now falls back to the session directory, as the CLI
already did — and `assertProjectSkill` refuses a filesystem root as a
boundary outright, so the next caller that forgets cannot reopen this.
Also, cubic's optional one: parent traversal is tested exactly (`..` or
`../…`), so a directory literally named `..foo` under the root is inside.
Verified: 668 pass across the workspace, plugin, fork-guard and skill
suites, typecheck clean. Mutation-checked: accepting a root of `/`, and
refusing `..foo`, each fail a test.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Q51zFUmPg1WwtS5CrGJE6/
1 parent 266e123 commit eec91fd
3 files changed
Lines changed: 41 additions & 5 deletions
File tree
- packages/opencode
- src
- altimate/workspace
- plugin/tui/altimate
- test/altimate/workspace
Lines changed: 13 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
789 | 789 | | |
790 | 790 | | |
791 | 791 | | |
792 | | - | |
793 | | - | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
794 | 801 | | |
795 | 802 | | |
796 | 803 | | |
| |||
817 | 824 | | |
818 | 825 | | |
819 | 826 | | |
820 | | - | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
821 | 831 | | |
822 | 832 | | |
823 | 833 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
573 | 573 | | |
574 | 574 | | |
575 | 575 | | |
576 | | - | |
577 | | - | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
578 | 580 | | |
579 | 581 | | |
580 | 582 | | |
| |||
Lines changed: 24 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| 52 | + | |
52 | 53 | | |
53 | 54 | | |
54 | 55 | | |
| |||
677 | 678 | | |
678 | 679 | | |
679 | 680 | | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
680 | 704 | | |
681 | 705 | | |
682 | 706 | | |
| |||
0 commit comments