diff --git a/docmost.log b/docmost.log index e69de29..aa82515 100644 --- a/docmost.log +++ b/docmost.log @@ -0,0 +1,111 @@ +2026-04-11T21:03:23.976601Z INFO docmost_rust: --- startup --- +2026-04-11T21:03:30.017087Z INFO docmost_rust: login success, fetching spaces from https://docmost.nakano47.com/api +2026-04-11T21:03:30.308064Z INFO docmost_rust: spaces loaded: 5 spaces +2026-04-11T21:03:30.308124Z INFO docmost_rust: auto-loading pages for space 'Curso Cobol Platzi' (019b7051-6cde-7cfe-90cf-62787f33a2b0) +2026-04-11T21:03:30.661432Z INFO docmost_rust: pages loaded: 1 pages +2026-04-11T21:03:32.370465Z INFO docmost_rust: pages loaded: 0 pages +2026-04-11T21:03:33.505589Z INFO docmost_rust: pages loaded: 8 pages +2026-04-11T21:03:41.986821Z INFO docmost_rust::api: fetch_page_content: POST https://docmost.nakano47.com/api/pages/info page_id=019d43de-1212-77c3-8970-cd550e325bb8 +2026-04-11T21:03:42.286703Z INFO docmost_rust::api: fetch_page_content: status=200 OK body_len=1480 +2026-04-11T21:03:42.286760Z INFO docmost_rust::api: fetch_page_content: raw body = {"data":{"id":"019d43de-1212-77c3-8970-cd550e325bb8","slugId":"1PUibWlxIz","title":"Tareas pendientes","icon":null,"coverPhoto":null,"position":"Zz0gH","parentPageId":null,"creatorId":"019a8369-7137-75b6-b171-cb7e11111fa7","lastUpdatedById":"019a8369-7137-75b6-b171-cb7e11111fa7","spaceId":"019a8369-7142-7c46-89c4-5f3a65b16942","workspaceId":"019a8369-713a-7aee-b3d9-45fb478c1f81","isLocked":false,"createdAt":"2026-03-31T12:28:40.336Z","updatedAt":"2026-04-11T20:54:47.425Z","deletedAt":null,"contributorIds":["019a8369-7137-75b6-b171-cb7e11111fa7"],"content":"- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer pase a prod de lo del SFTP\n- [x] Instalar nextcloud y office\n- [ ] pagarle a jonny y a daisy\n\nComprar :\n\n- [x] Soda cáustica\n- [ ] espejo banio(opcional)\n- [ ] llaves para brenda\n- [ ] raqueta eléctrica\n- [ ] cable hdmix2\n- [ ] batería portátil","creator":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"lastUpdatedBy":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"contributors":[{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null}],"space":{"id":"019a8369-7142-7c46-89c4-5f3a65b16942","name":"General","slug":"general"},"permissions":{"canEdit":true,"hasRestriction":false}},"success":true,"status":200} +2026-04-11T21:03:42.286939Z INFO docmost_rust::api: fetch_page_content: top-level keys = Some(["data", "status", "success"]) +2026-04-11T21:03:42.286971Z INFO docmost_rust::api: fetch_page_content: extracted content len=449 +2026-04-11T21:03:42.316295Z INFO docmost_rust: page content loaded: id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes" content_len=449 +2026-04-11T21:03:42.316375Z INFO docmost_rust: content preview: "- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer" +2026-04-11T21:03:42.316447Z INFO docmost_rust: textarea lines: 16 +2026-04-11T21:03:42.316476Z INFO docmost_rust: state → Editor +2026-04-11T21:05:19.218738Z INFO docmost_rust::api: save_page: page_id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes" content_len=449 +2026-04-11T21:05:19.587820Z INFO docmost_rust: page saved ok +2026-04-11T21:05:21.041405Z INFO docmost_rust::api: save_page: page_id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes" content_len=449 +2026-04-11T21:05:21.467177Z INFO docmost_rust: page saved ok +2026-04-11T21:05:26.086612Z INFO docmost_rust::api: fetch_page_content: POST https://docmost.nakano47.com/api/pages/info page_id=019baf3f-3d47-79be-a857-3b204e64ed91 +2026-04-11T21:05:26.358512Z INFO docmost_rust::api: fetch_page_content: status=200 OK body_len=1024 +2026-04-11T21:05:26.358549Z INFO docmost_rust::api: fetch_page_content: raw body = {"data":{"id":"019baf3f-3d47-79be-a857-3b204e64ed91","slugId":"hIl2Vlh35u","title":"I CODES","icon":null,"coverPhoto":null,"position":"a62pX","parentPageId":null,"creatorId":"019a8369-7137-75b6-b171-cb7e11111fa7","lastUpdatedById":"019a8369-7137-75b6-b171-cb7e11111fa7","spaceId":"019a8369-7142-7c46-89c4-5f3a65b16942","workspaceId":"019a8369-713a-7aee-b3d9-45fb478c1f81","isLocked":false,"createdAt":"2026-01-11T22:48:35.898Z","updatedAt":"2026-04-07T16:16:50.845Z","deletedAt":null,"contributorIds":["019a8369-7137-75b6-b171-cb7e11111fa7"],"content":"HND-712\n\nHMN-784","creator":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"lastUpdatedBy":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"contributors":[{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null}],"space":{"id":"019a8369-7142-7c46-89c4-5f3a65b16942","name":"General","slug":"general"},"permissions":{"canEdit":true,"hasRestriction":false}},"success":true,"status":200} +2026-04-11T21:05:26.358673Z INFO docmost_rust::api: fetch_page_content: top-level keys = Some(["data", "status", "success"]) +2026-04-11T21:05:26.358692Z INFO docmost_rust::api: fetch_page_content: extracted content len=16 +2026-04-11T21:05:26.359773Z INFO docmost_rust: page content loaded: id=019baf3f-3d47-79be-a857-3b204e64ed91 title="I CODES" content_len=16 +2026-04-11T21:05:26.359803Z INFO docmost_rust: content preview: "HND-712\n\nHMN-784" +2026-04-11T21:05:26.359818Z INFO docmost_rust: textarea lines: 3 +2026-04-11T21:05:26.359829Z INFO docmost_rust: state → Editor +2026-04-11T21:05:39.744044Z INFO docmost_rust::api: fetch_page_content: POST https://docmost.nakano47.com/api/pages/info page_id=019baf3f-3d47-79be-a857-3b204e64ed91 +2026-04-11T21:05:40.024813Z INFO docmost_rust::api: fetch_page_content: status=200 OK body_len=1024 +2026-04-11T21:05:40.024896Z INFO docmost_rust::api: fetch_page_content: raw body = {"data":{"id":"019baf3f-3d47-79be-a857-3b204e64ed91","slugId":"hIl2Vlh35u","title":"I CODES","icon":null,"coverPhoto":null,"position":"a62pX","parentPageId":null,"creatorId":"019a8369-7137-75b6-b171-cb7e11111fa7","lastUpdatedById":"019a8369-7137-75b6-b171-cb7e11111fa7","spaceId":"019a8369-7142-7c46-89c4-5f3a65b16942","workspaceId":"019a8369-713a-7aee-b3d9-45fb478c1f81","isLocked":false,"createdAt":"2026-01-11T22:48:35.898Z","updatedAt":"2026-04-07T16:16:50.845Z","deletedAt":null,"contributorIds":["019a8369-7137-75b6-b171-cb7e11111fa7"],"content":"HND-712\n\nHMN-784","creator":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"lastUpdatedBy":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"contributors":[{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null}],"space":{"id":"019a8369-7142-7c46-89c4-5f3a65b16942","name":"General","slug":"general"},"permissions":{"canEdit":true,"hasRestriction":false}},"success":true,"status":200} +2026-04-11T21:05:40.025159Z INFO docmost_rust::api: fetch_page_content: top-level keys = Some(["data", "status", "success"]) +2026-04-11T21:05:40.025205Z INFO docmost_rust::api: fetch_page_content: extracted content len=16 +2026-04-11T21:05:40.062369Z INFO docmost_rust: page content loaded: id=019baf3f-3d47-79be-a857-3b204e64ed91 title="I CODES" content_len=16 +2026-04-11T21:05:40.062409Z INFO docmost_rust: content preview: "HND-712\n\nHMN-784" +2026-04-11T21:05:40.062427Z INFO docmost_rust: textarea lines: 3 +2026-04-11T21:05:40.062438Z INFO docmost_rust: state → Editor +2026-04-11T21:05:45.492922Z INFO docmost_rust::api: save_page: page_id=019baf3f-3d47-79be-a857-3b204e64ed91 title="I CODES" content_len=28 +2026-04-11T21:05:45.907658Z INFO docmost_rust: page saved ok +2026-04-11T21:05:47.916693Z INFO docmost_rust::api: fetch_page_content: POST https://docmost.nakano47.com/api/pages/info page_id=019baf3f-3d47-79be-a857-3b204e64ed91 +2026-04-11T21:05:48.165519Z INFO docmost_rust::api: fetch_page_content: status=200 OK body_len=1037 +2026-04-11T21:05:48.165568Z INFO docmost_rust::api: fetch_page_content: raw body = {"data":{"id":"019baf3f-3d47-79be-a857-3b204e64ed91","slugId":"hIl2Vlh35u","title":"I CODES","icon":null,"coverPhoto":null,"position":"a62pX","parentPageId":null,"creatorId":"019a8369-7137-75b6-b171-cb7e11111fa7","lastUpdatedById":"019a8369-7137-75b6-b171-cb7e11111fa7","spaceId":"019a8369-7142-7c46-89c4-5f3a65b16942","workspaceId":"019a8369-713a-7aee-b3d9-45fb478c1f81","isLocked":false,"createdAt":"2026-01-11T22:48:35.898Z","updatedAt":"2026-04-11T21:05:45.799Z","deletedAt":null,"contributorIds":["019a8369-7137-75b6-b171-cb7e11111fa7"],"content":"HND-712\n\nHMN-784\n\ntest12343","creator":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"lastUpdatedBy":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"contributors":[{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null}],"space":{"id":"019a8369-7142-7c46-89c4-5f3a65b16942","name":"General","slug":"general"},"permissions":{"canEdit":true,"hasRestriction":false}},"success":true,"status":200} +2026-04-11T21:05:48.165684Z INFO docmost_rust::api: fetch_page_content: top-level keys = Some(["data", "status", "success"]) +2026-04-11T21:05:48.165702Z INFO docmost_rust::api: fetch_page_content: extracted content len=27 +2026-04-11T21:05:48.169827Z INFO docmost_rust: page content loaded: id=019baf3f-3d47-79be-a857-3b204e64ed91 title="I CODES" content_len=27 +2026-04-11T21:05:48.169866Z INFO docmost_rust: content preview: "HND-712\n\nHMN-784\n\ntest12343" +2026-04-11T21:05:48.169887Z INFO docmost_rust: textarea lines: 5 +2026-04-11T21:05:48.169898Z INFO docmost_rust: state → Editor +2026-04-11T21:06:23.962625Z INFO docmost_rust::api: fetch_page_content: POST https://docmost.nakano47.com/api/pages/info page_id=019d43de-1212-77c3-8970-cd550e325bb8 +2026-04-11T21:06:24.251011Z INFO docmost_rust::api: fetch_page_content: status=200 OK body_len=1480 +2026-04-11T21:06:24.251094Z INFO docmost_rust::api: fetch_page_content: raw body = {"data":{"id":"019d43de-1212-77c3-8970-cd550e325bb8","slugId":"1PUibWlxIz","title":"Tareas pendientes","icon":null,"coverPhoto":null,"position":"Zz0gH","parentPageId":null,"creatorId":"019a8369-7137-75b6-b171-cb7e11111fa7","lastUpdatedById":"019a8369-7137-75b6-b171-cb7e11111fa7","spaceId":"019a8369-7142-7c46-89c4-5f3a65b16942","workspaceId":"019a8369-713a-7aee-b3d9-45fb478c1f81","isLocked":false,"createdAt":"2026-03-31T12:28:40.336Z","updatedAt":"2026-04-11T21:05:21.312Z","deletedAt":null,"contributorIds":["019a8369-7137-75b6-b171-cb7e11111fa7"],"content":"- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer pase a prod de lo del SFTP\n- [x] Instalar nextcloud y office\n- [ ] pagarle a jonny y a daisy\n\nComprar :\n\n- [ ] Soda cáustica\n- [ ] espejo banio(opcional)\n- [ ] llaves para brenda\n- [ ] raqueta eléctrica\n- [ ] cable hdmix2\n- [ ] batería portátil","creator":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"lastUpdatedBy":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"contributors":[{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null}],"space":{"id":"019a8369-7142-7c46-89c4-5f3a65b16942","name":"General","slug":"general"},"permissions":{"canEdit":true,"hasRestriction":false}},"success":true,"status":200} +2026-04-11T21:06:24.251365Z INFO docmost_rust::api: fetch_page_content: top-level keys = Some(["data", "status", "success"]) +2026-04-11T21:06:24.251409Z INFO docmost_rust::api: fetch_page_content: extracted content len=449 +2026-04-11T21:06:24.279529Z INFO docmost_rust: page content loaded: id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes" content_len=449 +2026-04-11T21:06:24.279605Z INFO docmost_rust: content preview: "- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer" +2026-04-11T21:06:24.279667Z INFO docmost_rust: textarea lines: 16 +2026-04-11T21:06:24.279716Z INFO docmost_rust: state → Editor +2026-04-11T21:06:30.191826Z INFO docmost_rust::api: save_page: page_id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes xx" content_len=449 +2026-04-11T21:06:30.559290Z INFO docmost_rust: page saved ok +2026-04-11T21:06:35.524111Z INFO docmost_rust: --- startup --- +2026-04-11T21:06:40.458202Z INFO docmost_rust: login success, fetching spaces from https://docmost.nakano47.com/api +2026-04-11T21:06:40.754833Z INFO docmost_rust: spaces loaded: 5 spaces +2026-04-11T21:06:40.754901Z INFO docmost_rust: auto-loading pages for space 'Curso Cobol Platzi' (019b7051-6cde-7cfe-90cf-62787f33a2b0) +2026-04-11T21:06:41.104262Z INFO docmost_rust: pages loaded: 1 pages +2026-04-11T21:06:41.860429Z INFO docmost_rust: pages loaded: 0 pages +2026-04-11T21:06:42.236076Z INFO docmost_rust: pages loaded: 8 pages +2026-04-11T21:06:42.817289Z INFO docmost_rust: pages loaded: 0 pages +2026-04-11T21:06:43.463668Z INFO docmost_rust: pages loaded: 8 pages +2026-04-11T21:06:44.006256Z INFO docmost_rust: pages loaded: 2 pages +2026-04-11T21:06:44.781184Z INFO docmost_rust: pages loaded: 8 pages +2026-04-11T21:08:38.308779Z INFO docmost_rust: --- startup --- +2026-04-11T21:08:43.258765Z INFO docmost_rust: login success, fetching spaces from https://docmost.nakano47.com/api +2026-04-11T21:08:43.550964Z INFO docmost_rust: spaces loaded: 5 spaces +2026-04-11T21:08:43.551050Z INFO docmost_rust: auto-loading pages for space 'Curso Cobol Platzi' (019b7051-6cde-7cfe-90cf-62787f33a2b0) +2026-04-11T21:08:43.840908Z INFO docmost_rust: pages loaded: 1 pages +2026-04-11T21:08:45.337358Z INFO docmost_rust: pages loaded: 0 pages +2026-04-11T21:08:46.069269Z INFO docmost_rust: pages loaded: 8 pages +2026-04-11T21:08:50.201425Z INFO docmost_rust::api: fetch_page_content: POST https://docmost.nakano47.com/api/pages/info page_id=019d43de-1212-77c3-8970-cd550e325bb8 +2026-04-11T21:08:50.472211Z INFO docmost_rust::api: fetch_page_content: status=200 OK body_len=1483 +2026-04-11T21:08:50.472248Z INFO docmost_rust::api: fetch_page_content: raw body = {"data":{"id":"019d43de-1212-77c3-8970-cd550e325bb8","slugId":"1PUibWlxIz","title":"Tareas pendientes xx","icon":null,"coverPhoto":null,"position":"Zz0gH","parentPageId":null,"creatorId":"019a8369-7137-75b6-b171-cb7e11111fa7","lastUpdatedById":"019a8369-7137-75b6-b171-cb7e11111fa7","spaceId":"019a8369-7142-7c46-89c4-5f3a65b16942","workspaceId":"019a8369-713a-7aee-b3d9-45fb478c1f81","isLocked":false,"createdAt":"2026-03-31T12:28:40.336Z","updatedAt":"2026-04-11T21:06:30.472Z","deletedAt":null,"contributorIds":["019a8369-7137-75b6-b171-cb7e11111fa7"],"content":"- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer pase a prod de lo del SFTP\n- [x] Instalar nextcloud y office\n- [ ] pagarle a jonny y a daisy\n\nComprar :\n\n- [ ] Soda cáustica\n- [ ] espejo banio(opcional)\n- [ ] llaves para brenda\n- [ ] raqueta eléctrica\n- [ ] cable hdmix2\n- [ ] batería portátil","creator":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"lastUpdatedBy":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"contributors":[{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null}],"space":{"id":"019a8369-7142-7c46-89c4-5f3a65b16942","name":"General","slug":"general"},"permissions":{"canEdit":true,"hasRestriction":false}},"success":true,"status":200} +2026-04-11T21:08:50.472360Z INFO docmost_rust::api: fetch_page_content: top-level keys = Some(["data", "status", "success"]) +2026-04-11T21:08:50.472380Z INFO docmost_rust::api: fetch_page_content: extracted content len=449 +2026-04-11T21:08:50.505505Z INFO docmost_rust: page content loaded: id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes xx" content_len=449 +2026-04-11T21:08:50.505551Z INFO docmost_rust: content preview: "- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer" +2026-04-11T21:08:50.505596Z INFO docmost_rust: textarea lines: 16 +2026-04-11T21:08:50.505608Z INFO docmost_rust: state → Editor +2026-04-11T21:08:53.552441Z INFO docmost_rust::api: save_page: page_id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes xxy" content_len=449 +2026-04-11T21:08:53.938387Z INFO docmost_rust: page saved ok +2026-04-11T21:08:54.233016Z INFO docmost_rust: pages loaded: 8 pages +2026-04-11T21:08:56.441667Z INFO docmost_rust::api: fetch_page_content: POST https://docmost.nakano47.com/api/pages/info page_id=019d43de-1212-77c3-8970-cd550e325bb8 +2026-04-11T21:08:56.715603Z INFO docmost_rust::api: fetch_page_content: status=200 OK body_len=1484 +2026-04-11T21:08:56.715645Z INFO docmost_rust::api: fetch_page_content: raw body = {"data":{"id":"019d43de-1212-77c3-8970-cd550e325bb8","slugId":"1PUibWlxIz","title":"Tareas pendientes xxy","icon":null,"coverPhoto":null,"position":"Zz0gH","parentPageId":null,"creatorId":"019a8369-7137-75b6-b171-cb7e11111fa7","lastUpdatedById":"019a8369-7137-75b6-b171-cb7e11111fa7","spaceId":"019a8369-7142-7c46-89c4-5f3a65b16942","workspaceId":"019a8369-713a-7aee-b3d9-45fb478c1f81","isLocked":false,"createdAt":"2026-03-31T12:28:40.336Z","updatedAt":"2026-04-11T21:08:53.830Z","deletedAt":null,"contributorIds":["019a8369-7137-75b6-b171-cb7e11111fa7"],"content":"- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer pase a prod de lo del SFTP\n- [x] Instalar nextcloud y office\n- [ ] pagarle a jonny y a daisy\n\nComprar :\n\n- [ ] Soda cáustica\n- [ ] espejo banio(opcional)\n- [ ] llaves para brenda\n- [ ] raqueta eléctrica\n- [ ] cable hdmix2\n- [ ] batería portátil","creator":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"lastUpdatedBy":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"contributors":[{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null}],"space":{"id":"019a8369-7142-7c46-89c4-5f3a65b16942","name":"General","slug":"general"},"permissions":{"canEdit":true,"hasRestriction":false}},"success":true,"status":200} +2026-04-11T21:08:56.715790Z INFO docmost_rust::api: fetch_page_content: top-level keys = Some(["data", "status", "success"]) +2026-04-11T21:08:56.715815Z INFO docmost_rust::api: fetch_page_content: extracted content len=449 +2026-04-11T21:08:56.764827Z INFO docmost_rust: page content loaded: id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes xxy" content_len=449 +2026-04-11T21:08:56.764896Z INFO docmost_rust: content preview: "- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer" +2026-04-11T21:08:56.764956Z INFO docmost_rust: textarea lines: 16 +2026-04-11T21:08:56.764980Z INFO docmost_rust: state → Editor +2026-04-11T21:09:00.636857Z INFO docmost_rust::api: save_page: page_id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes xxyxs" content_len=449 +2026-04-11T21:09:01.007066Z INFO docmost_rust: page saved ok +2026-04-11T21:09:01.335053Z INFO docmost_rust: pages loaded: 8 pages +2026-04-11T21:11:44.789163Z INFO docmost_rust::api: fetch_page_content: POST https://docmost.nakano47.com/api/pages/info page_id=019d43de-1212-77c3-8970-cd550e325bb8 +2026-04-11T21:11:45.143223Z INFO docmost_rust::api: fetch_page_content: status=200 OK body_len=1877 +2026-04-11T21:11:45.143265Z INFO docmost_rust::api: fetch_page_content: raw body = {"data":{"id":"019d43de-1212-77c3-8970-cd550e325bb8","slugId":"1PUibWlxIz","title":"Tareas pendientes xxyxs","icon":null,"coverPhoto":null,"position":"Zz0gH","parentPageId":null,"creatorId":"019a8369-7137-75b6-b171-cb7e11111fa7","lastUpdatedById":"019a8369-7137-75b6-b171-cb7e11111fa7","spaceId":"019a8369-7142-7c46-89c4-5f3a65b16942","workspaceId":"019a8369-713a-7aee-b3d9-45fb478c1f81","isLocked":false,"createdAt":"2026-03-31T12:28:40.336Z","updatedAt":"2026-04-11T21:11:30.576Z","deletedAt":null,"contributorIds":["019a8369-7137-75b6-b171-cb7e11111fa7"],"content":"- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer pase a prod de lo del SFTP\n- [x] Instalar nextcloud y office\n- [ ] pagarle a jonny y a daisy\n\nComprar :\n\n- [ ] Soda cáustica\n- [ ] espejo banio(opcional)\n- [ ] llaves para brenda\n- [ ] raqueta eléctrica\n- [ ] cable hdmix2\n- [ ] batería portátil\n\n# titulo 1\n\n## titulo 2\n\n### titulo3\n\n- lista 1\n- lista 2\n- lista 3\n\n1. uno\n2. dow\n3. tres\n4. cuatro\n\n---\n\ndivider\n\n> quote\n\n```c\nuse \n//codigo de prueba en c++\n```\n\n| | | |\n| --- | --- | --- |\n| tabla head 1 | tabla head2 | tabla head3 |\n| content1 | content2 | content3 |\n| | content2.2 apoiasdpoi | |\n| | | |\n\n/","creator":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"lastUpdatedBy":{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null},"contributors":[{"id":"019a8369-7137-75b6-b171-cb7e11111fa7","name":"arthur","avatarUrl":null}],"space":{"id":"019a8369-7142-7c46-89c4-5f3a65b16942","name":"General","slug":"general"},"permissions":{"canEdit":true,"hasRestriction":false}},"success":true,"status":200} +2026-04-11T21:11:45.143451Z INFO docmost_rust::api: fetch_page_content: top-level keys = Some(["data", "status", "success"]) +2026-04-11T21:11:45.143476Z INFO docmost_rust::api: fetch_page_content: extracted content len=805 +2026-04-11T21:11:45.173468Z INFO docmost_rust: page content loaded: id=019d43de-1212-77c3-8970-cd550e325bb8 title="Tareas pendientes xxyxs" content_len=805 +2026-04-11T21:11:45.173549Z INFO docmost_rust: content preview: "- [ ] Hacer limpieza en sala y en cuarto\n- [ ] comprar soda cáustica para baño\n- [x] poner dock de steam deck\n- [ ] Agregar CV a nextcloudmodificar CV ponerle los títulos de los puestos\n- [x] Hacer" +2026-04-11T21:11:45.173643Z INFO docmost_rust: textarea lines: 51 +2026-04-11T21:11:45.173671Z INFO docmost_rust: state → Editor diff --git a/src/api.rs b/src/api.rs index ca84091..695dfe4 100644 --- a/src/api.rs +++ b/src/api.rs @@ -160,6 +160,7 @@ pub async fn fetch_page_content( struct PageUpdateRequest<'a> { #[serde(rename = "pageId")] page_id: &'a str, + title: &'a str, content: &'a str, operation: &'a str, format: &'a str, @@ -169,15 +170,19 @@ pub async fn save_page( base_url: &str, token: &str, page_id: &str, + title: &str, content: &str, ) -> Result<(), String> { let client = auth_client()?; + info!("save_page: page_id={page_id} title={title:?} content_len={}", content.len()); + let resp = client .post(format!("{base_url}/pages/update")) .header("Cookie", format!("authToken={token}")) .json(&PageUpdateRequest { page_id, + title, content, operation: "replace", format: "markdown", diff --git a/src/app.rs b/src/app.rs index 77a5412..d793669 100644 --- a/src/app.rs +++ b/src/app.rs @@ -140,9 +140,16 @@ impl MainView { // ─── Editor view ───────────────────────────────────────────────────────────── +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum EditorFocus { + Title, + Content, +} + pub struct EditorView { pub page_id: String, pub page_title: String, + pub focus: EditorFocus, pub saving: bool, pub status: Option, } @@ -158,6 +165,7 @@ impl EditorView { Self { page_id, page_title, + focus: EditorFocus::Content, saving: false, status: None, } diff --git a/src/main.rs b/src/main.rs index ecb7a69..8b75b00 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,7 +17,7 @@ use tracing::info; use tracing_subscriber::fmt; use api::{do_login, fetch_page_content, fetch_pages, fetch_spaces, save_page}; -use app::{App, AppMsg, AppState, EditorStatus, EditorView, LoginField, Panel}; +use app::{App, AppMsg, AppState, EditorFocus, EditorStatus, EditorView, LoginField, Panel}; use ui::{draw_editor, draw_login, draw_main}; // ─── Entry point ────────────────────────────────────────────────────────────── @@ -129,6 +129,14 @@ async fn run_app(terminal: &mut Terminal>) -> io::R info!("page saved ok"); app.editor.saving = false; app.editor.status = Some(EditorStatus::Saved); + // Update the title in the pages list immediately + let saved_id = app.editor.page_id.clone(); + let saved_title = app.editor.page_title.clone(); + if let Some(page) = app.main.pages.iter_mut().find(|p| p.id == saved_id) { + page.title = Some(saved_title); + } + // Refresh pages from server in the background + spawn_fetch_pages(&app, &tx); } AppMsg::SaveError(e) => { info!("save error: {e}"); @@ -274,7 +282,7 @@ async fn run_app(terminal: &mut Terminal>) -> io::R // ── Editor keys ─────────────────────────────────────────── AppState::Editor => { - // Clear status on any keypress + // Clear "Saved!" status on any keypress if matches!(app.editor.status, Some(EditorStatus::Saved)) { app.editor.status = None; } @@ -285,7 +293,7 @@ async fn run_app(terminal: &mut Terminal>) -> io::R app.state = AppState::Main; editor_textarea = None; } - // Ctrl+S → save + // Ctrl+S → save both title and content (KeyCode::Char('s'), m) if m.contains(KeyModifiers::CONTROL) => { if !app.editor.saving { app.editor.saving = true; @@ -293,13 +301,14 @@ async fn run_app(terminal: &mut Terminal>) -> io::R let base_url = app.base_url.clone(); let token = app.token.clone(); let page_id = app.editor.page_id.clone(); + let title = app.editor.page_title.clone(); let content = editor_textarea .as_ref() .map(|ta| ta.lines().join("\n")) .unwrap_or_default(); let tx2 = tx.clone(); tokio::spawn(async move { - let msg = match save_page(&base_url, &token, &page_id, &content).await { + let msg = match save_page(&base_url, &token, &page_id, &title, &content).await { Ok(()) => AppMsg::PageSaved, Err(e) => AppMsg::SaveError(e), }; @@ -307,10 +316,29 @@ async fn run_app(terminal: &mut Terminal>) -> io::R }); } } - // All other keys → delegate to textarea + // Tab → toggle focus between title and content + (KeyCode::Tab, _) => { + app.editor.focus = match app.editor.focus { + EditorFocus::Title => EditorFocus::Content, + EditorFocus::Content => EditorFocus::Title, + }; + } + // Title field keys + (KeyCode::Backspace, _) if app.editor.focus == EditorFocus::Title => { + app.editor.page_title.pop(); + } + (KeyCode::Char(c), m) + if app.editor.focus == EditorFocus::Title + && !m.contains(KeyModifiers::CONTROL) => + { + app.editor.page_title.push(c); + } + // All other keys → delegate to content textarea _ => { - if let Some(ta) = editor_textarea.as_mut() { - ta.input(key); + if app.editor.focus == EditorFocus::Content { + if let Some(ta) = editor_textarea.as_mut() { + ta.input(key); + } } } } diff --git a/src/ui.rs b/src/ui.rs index dfbe68b..95c72f6 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -7,7 +7,7 @@ use ratatui::{ }; use tui_textarea::TextArea; -use crate::app::{EditorStatus, EditorView, LoginField, LoginForm, MainView, Panel}; +use crate::app::{EditorFocus, EditorStatus, EditorView, LoginField, LoginForm, MainView, Panel}; // ─── Login screen ───────────────────────────────────────────────────────────── @@ -180,38 +180,57 @@ pub fn draw_editor(f: &mut Frame, editor: &EditorView, textarea: &mut TextArea<' let layout = Layout::default() .direction(Direction::Vertical) - .constraints([Constraint::Min(3), Constraint::Length(1)]) + .constraints([ + Constraint::Length(3), // title input + Constraint::Min(1), // content textarea + Constraint::Length(1), // status bar + ]) .split(size); - // Set textarea block with title - let border_style = if editor.saving { + // ── Title field ── + let title_focused = editor.focus == EditorFocus::Title; + let title_border = if editor.saving { Style::default().fg(Color::Yellow) - } else { + } else if title_focused { Style::default().fg(Color::Cyan) - }; - - let title = if editor.saving { - format!(" Saving: {} ", editor.page_title) } else { - format!(" Edit: {} ", editor.page_title) + Style::default().fg(Color::DarkGray) }; + let title_display = format!( + "{}{}", + editor.page_title, + if title_focused { "▌" } else { "" } + ); + f.render_widget( + Paragraph::new(title_display) + .block(Block::default().title(" Title ").borders(Borders::ALL).border_style(title_border)), + layout[0], + ); + // ── Content textarea ── + let content_focused = editor.focus == EditorFocus::Content; + let content_border = if editor.saving { + Style::default().fg(Color::Yellow) + } else if content_focused { + Style::default().fg(Color::Cyan) + } else { + Style::default().fg(Color::DarkGray) + }; textarea.set_block( Block::default() - .title(title) + .title(" Content ") .borders(Borders::ALL) - .border_style(border_style), + .border_style(content_border), ); textarea.set_line_number_style(Style::default().fg(Color::DarkGray)); textarea.set_cursor_line_style(Style::default().add_modifier(Modifier::UNDERLINED)); + f.render_widget(textarea.widget(), layout[1]); - f.render_widget(textarea.widget(), layout[0]); - - // Status bar + // ── Status bar ── let status_line = match &editor.status { Some(EditorStatus::Saved) => Line::from(vec![ Span::styled(" Saved! ", Style::default().fg(Color::Green).add_modifier(Modifier::BOLD)), - Span::styled(" Ctrl+S: Save · Esc: Back", Style::default().fg(Color::DarkGray)), + Span::styled(" Ctrl+S: Save · Tab: Switch field · Esc: Back", Style::default().fg(Color::DarkGray)), ]), Some(EditorStatus::Error(e)) => Line::from(vec![ Span::styled( @@ -220,12 +239,11 @@ pub fn draw_editor(f: &mut Frame, editor: &EditorView, textarea: &mut TextArea<' ), ]), None => Line::from(Span::styled( - " Ctrl+S: Save · Esc: Back to list", + " Ctrl+S: Save · Tab: Switch field · Esc: Back", Style::default().fg(Color::DarkGray), )), }; - - f.render_widget(Paragraph::new(status_line), layout[1]); + f.render_widget(Paragraph::new(status_line), layout[2]); } // ─── Helpers ──────────────────────────────────────────────────────────────────