feat(web): add Notebook Metadata & Outline tab in FileViewer

Aperta
#486 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
18/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
javascript, python
Ambito
api, backend, frontend

Direzione di ricerca

Start with FileViewer.js for the new Outline / Metadata tab and the Hide blank pages toggle, then find the Extended API endpoint on the Python side that would return page_style, has_ink and TOC data. Read how TITLESTYLE and TITLELEVEL are parsed from .note files before relying on them. Done means the tab lists notebook properties and clickable TOC entries, and the toggle hides pages where has_ink is false. This spans backend and frontend, so it is better suited to a maintainer or an experienced contributor than a first contribution.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

agent-ready enhancement notebook p1 web-ui

Summary

As richer .note metadata is persisted on the backend—starting with per-page page_style and has_ink, alongside user-curated Titles / Keywords and cross-note Links—FileViewer.js should surface structural notebook details in a dedicated right-pane tab rather than cluttering individual PNG canvas headers.

Goals

  • Expose an Extended API endpoint returning notebook-level and per-page structural metadata (page_style, has_ink, inferred date, device signature/dimensions, and available TOC Titles / Keywords / Links) independent of whether AI OCR is enabled or completed.
  • Add a dedicated Outline / Metadata tab in FileViewer.js displaying notebook properties, clickable TOC/keyword/link navigation, and per-page template info.
  • Add a "Hide blank pages" viewer toggle driven by has_ink === false to make large pre-generated planner notebooks easy to browse.

Additional Format & Backend Notes

  • Heading Hierarchy (TITLESTYLE vs TITLELEVEL) & Title OCR (#501): Empirical inspection across real firmware .note files shows TITLELEVEL is "1" on 100% of titles, while the 4 visual heading styles are encoded in TITLESTYLE (1000254, 1157254, 1201000, 1000000) and heading ink is stored as cropped RLE bitmaps in TITLEBITMAP. Outline rendering should consume normalized TITLESTYLE levels (with graceful fallback before TITLEBITMAP OCR in #501 completes).
  • 64-bit ID Safety (#504): Ensure notebook FILE_ID and cross-file link target IDs in the structure response are serialized as strings so browser JS never loses precision above $2^{53} - 1$.
Lingua principale
Python
Stelle
82
Fork
31
Merge medio
8h 54m
PR unite (30g)
182

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di allenporter/supernote

Tutte le issue di allenporter/supernote

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.