title editor
This commit is contained in:
111
docmost.log
111
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 <stdin>\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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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<EditorStatus>,
|
||||
}
|
||||
@@ -158,6 +165,7 @@ impl EditorView {
|
||||
Self {
|
||||
page_id,
|
||||
page_title,
|
||||
focus: EditorFocus::Content,
|
||||
saving: false,
|
||||
status: None,
|
||||
}
|
||||
|
||||
42
src/main.rs
42
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<CrosstermBackend<io::Stdout>>) -> 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<CrosstermBackend<io::Stdout>>) -> 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<CrosstermBackend<io::Stdout>>) -> 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<CrosstermBackend<io::Stdout>>) -> 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<CrosstermBackend<io::Stdout>>) -> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
56
src/ui.rs
56
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 ──────────────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user