fix: stabilize markdown notes — internal link modal, rename UI, trash integration
- Replace broken ObjectPickerModal with simple inline modal (Label+URL fields) - Insert internal link at cursor position in textarea - Add rename button in note editor header and note cards - Add delete button on note cards with confirm dialog - Integrate DeleteNote with shared trash (.verstak/trash/) via files.TrashFile() - Remove hidden .verstak/trash/notes/ folder — notes use unified trash now - Fix purgeTrashNode to clean file-record-based trash entries (notes/files) - Add activity + sync ops to DeleteNote binding - Add files.TrashFile() public method - Update i18n keys for note.rename, note.deleteConfirm, internal link modal - AssertContained: symlink-aware path containment check - Update tests: shared trash, file record missing flag, collision on rename - All go test ./... pass, frontend build passes, GUI binary built
This commit is contained in:
@@ -610,6 +610,14 @@ func (s *Service) trashRecord(r Record) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// TrashFile moves a single file record's physical file to .verstak/trash/
|
||||
// and marks the record as missing=1. This is the same mechanism used by
|
||||
// deleteFileRecords, exposed as a public method for individual file trashing
|
||||
// (e.g. from notes.Delete).
|
||||
func (s *Service) TrashFile(rec *Record) error {
|
||||
return s.trashRecord(*rec)
|
||||
}
|
||||
|
||||
func (s *Service) deleteFileRecords(nodeID string) error {
|
||||
records, err := s.ListByNode(nodeID)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user