From 45287b3541b52f36674da114d6001ca412216af7 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Sat, 25 Apr 2026 20:49:44 +0200 Subject: [PATCH] Fix: Sidebar scrollable + add Eltern-Portal nav link MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit overflow-hidden → overflow-y-auto so all nav items are reachable. Added /parent (Eltern-Portal) link with people icon. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../{cv_cell_grid_build.py => ocr/cell_grid/build.py} | 0 .../{cv_cell_grid.py => ocr/cell_grid/cell_grid.py} | 0 .../{cv_cell_grid_helpers.py => ocr/cell_grid/helpers.py} | 0 .../{cv_cell_grid_legacy.py => ocr/cell_grid/legacy.py} | 0 .../{cv_cell_grid_merge.py => ocr/cell_grid/merge.py} | 0 .../cell_grid/streaming.py} | 0 .../{cv_cell_grid_vocab.py => ocr/cell_grid/vocab.py} | 0 .../backend/{cv_box_detect.py => ocr/detect/box_detect.py} | 0 .../backend/{cv_box_layout.py => ocr/detect/box_layout.py} | 0 .../{cv_color_detect.py => ocr/detect/color_detect.py} | 0 .../detect/doclayout_detect.py} | 0 .../{cv_graphic_detect.py => ocr/detect/graphic_detect.py} | 0 .../{cv_syllable_core.py => ocr/detect/syllable/core.py} | 0 .../detect/syllable/detect.py} | 0 .../{cv_syllable_merge.py => ocr/detect/syllable/merge.py} | 0 .../{cv_ocr_cell_filter.py => ocr/engines/cell_filter.py} | 0 .../engines/cell_phonetics.py} | 0 .../backend/{cv_ocr_engines.py => ocr/engines/engines.py} | 0 .../{cv_ocr_ipa_lookup.py => ocr/engines/ipa_lookup.py} | 0 .../{cv_ocr_ipa_repair.py => ocr/engines/ipa_repair.py} | 0 .../engines/vocab_postprocess.py} | 0 .../engines/word_assembly.py} | 0 .../{cv_gutter_repair_core.py => ocr/gutter/core.py} | 0 .../{cv_gutter_repair_grid.py => ocr/gutter/grid.py} | 0 .../backend/{cv_gutter_repair.py => ocr/gutter/repair.py} | 0 .../backend/{ocr_image_enhance.py => ocr/image_enhance.py} | 0 .../backend/{cv_ipa_german.py => ocr/ipa_german.py} | 0 .../{cv_layout_analyze.py => ocr/layout/analyze.py} | 0 .../{cv_layout_classify.py => ocr/layout/classify.py} | 0 .../layout/classify_position.py} | 0 .../layout/column_refine.py} | 0 .../{cv_layout_columns.py => ocr/layout/columns.py} | 0 .../{cv_layout_detection.py => ocr/layout/detection.py} | 0 .../backend/{cv_layout.py => ocr/layout/layout.py} | 0 .../layout/row_regularize.py} | 0 .../backend/{cv_layout_rows.py => ocr/layout/rows.py} | 0 .../{cv_layout_scoring.py => ocr/layout/scoring.py} | 0 .../backend/{cv_vocab_pipeline.py => ocr/pipeline.py} | 0 .../preprocessing/deskew.py} | 0 .../preprocessing/dewarp.py} | 0 .../preprocessing/preprocessing.py} | 0 .../backend/{cv_review_llm.py => ocr/review/llm.py} | 0 .../{cv_review_pipeline.py => ocr/review/pipeline.py} | 0 .../backend/{cv_review.py => ocr/review/review.py} | 0 .../backend/{cv_review_spell.py => ocr/review/spell.py} | 0 .../backend/{cv_vocab_types.py => ocr/types.py} | 0 .../backend/{cv_words_first.py => ocr/words_first.py} | 0 studio-v2/components/Sidebar.tsx | 7 ++++++- 48 files changed, 6 insertions(+), 1 deletion(-) rename klausur-service/backend/{cv_cell_grid_build.py => ocr/cell_grid/build.py} (100%) rename klausur-service/backend/{cv_cell_grid.py => ocr/cell_grid/cell_grid.py} (100%) rename klausur-service/backend/{cv_cell_grid_helpers.py => ocr/cell_grid/helpers.py} (100%) rename klausur-service/backend/{cv_cell_grid_legacy.py => ocr/cell_grid/legacy.py} (100%) rename klausur-service/backend/{cv_cell_grid_merge.py => ocr/cell_grid/merge.py} (100%) rename klausur-service/backend/{cv_cell_grid_streaming.py => ocr/cell_grid/streaming.py} (100%) rename klausur-service/backend/{cv_cell_grid_vocab.py => ocr/cell_grid/vocab.py} (100%) rename klausur-service/backend/{cv_box_detect.py => ocr/detect/box_detect.py} (100%) rename klausur-service/backend/{cv_box_layout.py => ocr/detect/box_layout.py} (100%) rename klausur-service/backend/{cv_color_detect.py => ocr/detect/color_detect.py} (100%) rename klausur-service/backend/{cv_doclayout_detect.py => ocr/detect/doclayout_detect.py} (100%) rename klausur-service/backend/{cv_graphic_detect.py => ocr/detect/graphic_detect.py} (100%) rename klausur-service/backend/{cv_syllable_core.py => ocr/detect/syllable/core.py} (100%) rename klausur-service/backend/{cv_syllable_detect.py => ocr/detect/syllable/detect.py} (100%) rename klausur-service/backend/{cv_syllable_merge.py => ocr/detect/syllable/merge.py} (100%) rename klausur-service/backend/{cv_ocr_cell_filter.py => ocr/engines/cell_filter.py} (100%) rename klausur-service/backend/{cv_ocr_cell_phonetics.py => ocr/engines/cell_phonetics.py} (100%) rename klausur-service/backend/{cv_ocr_engines.py => ocr/engines/engines.py} (100%) rename klausur-service/backend/{cv_ocr_ipa_lookup.py => ocr/engines/ipa_lookup.py} (100%) rename klausur-service/backend/{cv_ocr_ipa_repair.py => ocr/engines/ipa_repair.py} (100%) rename klausur-service/backend/{cv_ocr_vocab_postprocess.py => ocr/engines/vocab_postprocess.py} (100%) rename klausur-service/backend/{cv_ocr_word_assembly.py => ocr/engines/word_assembly.py} (100%) rename klausur-service/backend/{cv_gutter_repair_core.py => ocr/gutter/core.py} (100%) rename klausur-service/backend/{cv_gutter_repair_grid.py => ocr/gutter/grid.py} (100%) rename klausur-service/backend/{cv_gutter_repair.py => ocr/gutter/repair.py} (100%) rename klausur-service/backend/{ocr_image_enhance.py => ocr/image_enhance.py} (100%) rename klausur-service/backend/{cv_ipa_german.py => ocr/ipa_german.py} (100%) rename klausur-service/backend/{cv_layout_analyze.py => ocr/layout/analyze.py} (100%) rename klausur-service/backend/{cv_layout_classify.py => ocr/layout/classify.py} (100%) rename klausur-service/backend/{cv_layout_classify_position.py => ocr/layout/classify_position.py} (100%) rename klausur-service/backend/{cv_layout_column_refine.py => ocr/layout/column_refine.py} (100%) rename klausur-service/backend/{cv_layout_columns.py => ocr/layout/columns.py} (100%) rename klausur-service/backend/{cv_layout_detection.py => ocr/layout/detection.py} (100%) rename klausur-service/backend/{cv_layout.py => ocr/layout/layout.py} (100%) rename klausur-service/backend/{cv_layout_row_regularize.py => ocr/layout/row_regularize.py} (100%) rename klausur-service/backend/{cv_layout_rows.py => ocr/layout/rows.py} (100%) rename klausur-service/backend/{cv_layout_scoring.py => ocr/layout/scoring.py} (100%) rename klausur-service/backend/{cv_vocab_pipeline.py => ocr/pipeline.py} (100%) rename klausur-service/backend/{cv_preprocessing_deskew.py => ocr/preprocessing/deskew.py} (100%) rename klausur-service/backend/{cv_preprocessing_dewarp.py => ocr/preprocessing/dewarp.py} (100%) rename klausur-service/backend/{cv_preprocessing.py => ocr/preprocessing/preprocessing.py} (100%) rename klausur-service/backend/{cv_review_llm.py => ocr/review/llm.py} (100%) rename klausur-service/backend/{cv_review_pipeline.py => ocr/review/pipeline.py} (100%) rename klausur-service/backend/{cv_review.py => ocr/review/review.py} (100%) rename klausur-service/backend/{cv_review_spell.py => ocr/review/spell.py} (100%) rename klausur-service/backend/{cv_vocab_types.py => ocr/types.py} (100%) rename klausur-service/backend/{cv_words_first.py => ocr/words_first.py} (100%) diff --git a/klausur-service/backend/cv_cell_grid_build.py b/klausur-service/backend/ocr/cell_grid/build.py similarity index 100% rename from klausur-service/backend/cv_cell_grid_build.py rename to klausur-service/backend/ocr/cell_grid/build.py diff --git a/klausur-service/backend/cv_cell_grid.py b/klausur-service/backend/ocr/cell_grid/cell_grid.py similarity index 100% rename from klausur-service/backend/cv_cell_grid.py rename to klausur-service/backend/ocr/cell_grid/cell_grid.py diff --git a/klausur-service/backend/cv_cell_grid_helpers.py b/klausur-service/backend/ocr/cell_grid/helpers.py similarity index 100% rename from klausur-service/backend/cv_cell_grid_helpers.py rename to klausur-service/backend/ocr/cell_grid/helpers.py diff --git a/klausur-service/backend/cv_cell_grid_legacy.py b/klausur-service/backend/ocr/cell_grid/legacy.py similarity index 100% rename from klausur-service/backend/cv_cell_grid_legacy.py rename to klausur-service/backend/ocr/cell_grid/legacy.py diff --git a/klausur-service/backend/cv_cell_grid_merge.py b/klausur-service/backend/ocr/cell_grid/merge.py similarity index 100% rename from klausur-service/backend/cv_cell_grid_merge.py rename to klausur-service/backend/ocr/cell_grid/merge.py diff --git a/klausur-service/backend/cv_cell_grid_streaming.py b/klausur-service/backend/ocr/cell_grid/streaming.py similarity index 100% rename from klausur-service/backend/cv_cell_grid_streaming.py rename to klausur-service/backend/ocr/cell_grid/streaming.py diff --git a/klausur-service/backend/cv_cell_grid_vocab.py b/klausur-service/backend/ocr/cell_grid/vocab.py similarity index 100% rename from klausur-service/backend/cv_cell_grid_vocab.py rename to klausur-service/backend/ocr/cell_grid/vocab.py diff --git a/klausur-service/backend/cv_box_detect.py b/klausur-service/backend/ocr/detect/box_detect.py similarity index 100% rename from klausur-service/backend/cv_box_detect.py rename to klausur-service/backend/ocr/detect/box_detect.py diff --git a/klausur-service/backend/cv_box_layout.py b/klausur-service/backend/ocr/detect/box_layout.py similarity index 100% rename from klausur-service/backend/cv_box_layout.py rename to klausur-service/backend/ocr/detect/box_layout.py diff --git a/klausur-service/backend/cv_color_detect.py b/klausur-service/backend/ocr/detect/color_detect.py similarity index 100% rename from klausur-service/backend/cv_color_detect.py rename to klausur-service/backend/ocr/detect/color_detect.py diff --git a/klausur-service/backend/cv_doclayout_detect.py b/klausur-service/backend/ocr/detect/doclayout_detect.py similarity index 100% rename from klausur-service/backend/cv_doclayout_detect.py rename to klausur-service/backend/ocr/detect/doclayout_detect.py diff --git a/klausur-service/backend/cv_graphic_detect.py b/klausur-service/backend/ocr/detect/graphic_detect.py similarity index 100% rename from klausur-service/backend/cv_graphic_detect.py rename to klausur-service/backend/ocr/detect/graphic_detect.py diff --git a/klausur-service/backend/cv_syllable_core.py b/klausur-service/backend/ocr/detect/syllable/core.py similarity index 100% rename from klausur-service/backend/cv_syllable_core.py rename to klausur-service/backend/ocr/detect/syllable/core.py diff --git a/klausur-service/backend/cv_syllable_detect.py b/klausur-service/backend/ocr/detect/syllable/detect.py similarity index 100% rename from klausur-service/backend/cv_syllable_detect.py rename to klausur-service/backend/ocr/detect/syllable/detect.py diff --git a/klausur-service/backend/cv_syllable_merge.py b/klausur-service/backend/ocr/detect/syllable/merge.py similarity index 100% rename from klausur-service/backend/cv_syllable_merge.py rename to klausur-service/backend/ocr/detect/syllable/merge.py diff --git a/klausur-service/backend/cv_ocr_cell_filter.py b/klausur-service/backend/ocr/engines/cell_filter.py similarity index 100% rename from klausur-service/backend/cv_ocr_cell_filter.py rename to klausur-service/backend/ocr/engines/cell_filter.py diff --git a/klausur-service/backend/cv_ocr_cell_phonetics.py b/klausur-service/backend/ocr/engines/cell_phonetics.py similarity index 100% rename from klausur-service/backend/cv_ocr_cell_phonetics.py rename to klausur-service/backend/ocr/engines/cell_phonetics.py diff --git a/klausur-service/backend/cv_ocr_engines.py b/klausur-service/backend/ocr/engines/engines.py similarity index 100% rename from klausur-service/backend/cv_ocr_engines.py rename to klausur-service/backend/ocr/engines/engines.py diff --git a/klausur-service/backend/cv_ocr_ipa_lookup.py b/klausur-service/backend/ocr/engines/ipa_lookup.py similarity index 100% rename from klausur-service/backend/cv_ocr_ipa_lookup.py rename to klausur-service/backend/ocr/engines/ipa_lookup.py diff --git a/klausur-service/backend/cv_ocr_ipa_repair.py b/klausur-service/backend/ocr/engines/ipa_repair.py similarity index 100% rename from klausur-service/backend/cv_ocr_ipa_repair.py rename to klausur-service/backend/ocr/engines/ipa_repair.py diff --git a/klausur-service/backend/cv_ocr_vocab_postprocess.py b/klausur-service/backend/ocr/engines/vocab_postprocess.py similarity index 100% rename from klausur-service/backend/cv_ocr_vocab_postprocess.py rename to klausur-service/backend/ocr/engines/vocab_postprocess.py diff --git a/klausur-service/backend/cv_ocr_word_assembly.py b/klausur-service/backend/ocr/engines/word_assembly.py similarity index 100% rename from klausur-service/backend/cv_ocr_word_assembly.py rename to klausur-service/backend/ocr/engines/word_assembly.py diff --git a/klausur-service/backend/cv_gutter_repair_core.py b/klausur-service/backend/ocr/gutter/core.py similarity index 100% rename from klausur-service/backend/cv_gutter_repair_core.py rename to klausur-service/backend/ocr/gutter/core.py diff --git a/klausur-service/backend/cv_gutter_repair_grid.py b/klausur-service/backend/ocr/gutter/grid.py similarity index 100% rename from klausur-service/backend/cv_gutter_repair_grid.py rename to klausur-service/backend/ocr/gutter/grid.py diff --git a/klausur-service/backend/cv_gutter_repair.py b/klausur-service/backend/ocr/gutter/repair.py similarity index 100% rename from klausur-service/backend/cv_gutter_repair.py rename to klausur-service/backend/ocr/gutter/repair.py diff --git a/klausur-service/backend/ocr_image_enhance.py b/klausur-service/backend/ocr/image_enhance.py similarity index 100% rename from klausur-service/backend/ocr_image_enhance.py rename to klausur-service/backend/ocr/image_enhance.py diff --git a/klausur-service/backend/cv_ipa_german.py b/klausur-service/backend/ocr/ipa_german.py similarity index 100% rename from klausur-service/backend/cv_ipa_german.py rename to klausur-service/backend/ocr/ipa_german.py diff --git a/klausur-service/backend/cv_layout_analyze.py b/klausur-service/backend/ocr/layout/analyze.py similarity index 100% rename from klausur-service/backend/cv_layout_analyze.py rename to klausur-service/backend/ocr/layout/analyze.py diff --git a/klausur-service/backend/cv_layout_classify.py b/klausur-service/backend/ocr/layout/classify.py similarity index 100% rename from klausur-service/backend/cv_layout_classify.py rename to klausur-service/backend/ocr/layout/classify.py diff --git a/klausur-service/backend/cv_layout_classify_position.py b/klausur-service/backend/ocr/layout/classify_position.py similarity index 100% rename from klausur-service/backend/cv_layout_classify_position.py rename to klausur-service/backend/ocr/layout/classify_position.py diff --git a/klausur-service/backend/cv_layout_column_refine.py b/klausur-service/backend/ocr/layout/column_refine.py similarity index 100% rename from klausur-service/backend/cv_layout_column_refine.py rename to klausur-service/backend/ocr/layout/column_refine.py diff --git a/klausur-service/backend/cv_layout_columns.py b/klausur-service/backend/ocr/layout/columns.py similarity index 100% rename from klausur-service/backend/cv_layout_columns.py rename to klausur-service/backend/ocr/layout/columns.py diff --git a/klausur-service/backend/cv_layout_detection.py b/klausur-service/backend/ocr/layout/detection.py similarity index 100% rename from klausur-service/backend/cv_layout_detection.py rename to klausur-service/backend/ocr/layout/detection.py diff --git a/klausur-service/backend/cv_layout.py b/klausur-service/backend/ocr/layout/layout.py similarity index 100% rename from klausur-service/backend/cv_layout.py rename to klausur-service/backend/ocr/layout/layout.py diff --git a/klausur-service/backend/cv_layout_row_regularize.py b/klausur-service/backend/ocr/layout/row_regularize.py similarity index 100% rename from klausur-service/backend/cv_layout_row_regularize.py rename to klausur-service/backend/ocr/layout/row_regularize.py diff --git a/klausur-service/backend/cv_layout_rows.py b/klausur-service/backend/ocr/layout/rows.py similarity index 100% rename from klausur-service/backend/cv_layout_rows.py rename to klausur-service/backend/ocr/layout/rows.py diff --git a/klausur-service/backend/cv_layout_scoring.py b/klausur-service/backend/ocr/layout/scoring.py similarity index 100% rename from klausur-service/backend/cv_layout_scoring.py rename to klausur-service/backend/ocr/layout/scoring.py diff --git a/klausur-service/backend/cv_vocab_pipeline.py b/klausur-service/backend/ocr/pipeline.py similarity index 100% rename from klausur-service/backend/cv_vocab_pipeline.py rename to klausur-service/backend/ocr/pipeline.py diff --git a/klausur-service/backend/cv_preprocessing_deskew.py b/klausur-service/backend/ocr/preprocessing/deskew.py similarity index 100% rename from klausur-service/backend/cv_preprocessing_deskew.py rename to klausur-service/backend/ocr/preprocessing/deskew.py diff --git a/klausur-service/backend/cv_preprocessing_dewarp.py b/klausur-service/backend/ocr/preprocessing/dewarp.py similarity index 100% rename from klausur-service/backend/cv_preprocessing_dewarp.py rename to klausur-service/backend/ocr/preprocessing/dewarp.py diff --git a/klausur-service/backend/cv_preprocessing.py b/klausur-service/backend/ocr/preprocessing/preprocessing.py similarity index 100% rename from klausur-service/backend/cv_preprocessing.py rename to klausur-service/backend/ocr/preprocessing/preprocessing.py diff --git a/klausur-service/backend/cv_review_llm.py b/klausur-service/backend/ocr/review/llm.py similarity index 100% rename from klausur-service/backend/cv_review_llm.py rename to klausur-service/backend/ocr/review/llm.py diff --git a/klausur-service/backend/cv_review_pipeline.py b/klausur-service/backend/ocr/review/pipeline.py similarity index 100% rename from klausur-service/backend/cv_review_pipeline.py rename to klausur-service/backend/ocr/review/pipeline.py diff --git a/klausur-service/backend/cv_review.py b/klausur-service/backend/ocr/review/review.py similarity index 100% rename from klausur-service/backend/cv_review.py rename to klausur-service/backend/ocr/review/review.py diff --git a/klausur-service/backend/cv_review_spell.py b/klausur-service/backend/ocr/review/spell.py similarity index 100% rename from klausur-service/backend/cv_review_spell.py rename to klausur-service/backend/ocr/review/spell.py diff --git a/klausur-service/backend/cv_vocab_types.py b/klausur-service/backend/ocr/types.py similarity index 100% rename from klausur-service/backend/cv_vocab_types.py rename to klausur-service/backend/ocr/types.py diff --git a/klausur-service/backend/cv_words_first.py b/klausur-service/backend/ocr/words_first.py similarity index 100% rename from klausur-service/backend/cv_words_first.py rename to klausur-service/backend/ocr/words_first.py diff --git a/studio-v2/components/Sidebar.tsx b/studio-v2/components/Sidebar.tsx index 54d0daf..84d9a27 100644 --- a/studio-v2/components/Sidebar.tsx +++ b/studio-v2/components/Sidebar.tsx @@ -71,6 +71,11 @@ export function Sidebar({ selectedTab = 'dashboard', onTabChange }: SidebarProps )}, + { id: 'eltern', labelKey: 'nav_eltern', href: '/parent', icon: ( + + + + )}, { id: 'vokabeln', labelKey: 'nav_vokabeln', href: '/vocab-worksheet', icon: ( @@ -148,7 +153,7 @@ export function Sidebar({ selectedTab = 'dashboard', onTabChange }: SidebarProps onMouseEnter={() => setSidebarHovered(true)} onMouseLeave={() => setSidebarHovered(false)} > -