The .corvo-section-subtitle had border-bottom and the .corvo-table-wrapper
had border-top, creating a duplicated line when a table followed a card
heading.
Added CSS rules to remove border-top from table-wrapper when it
immediately follows a section-subtitle (in various adjacency patterns).
All 97 tests passing
Dashboard redesign:
- Replace Controle do ciclo table with 2 visual cards
- Matéria atual card: big subject name + next subject below
- Item atual card: big item name + next item below
- Cards use visual hierarchy (big value, small label)
Sessions tab improvements:
- Add cycle context bar at top: Estudando agora: [Subject] | Item: [Item] | Proxima: [Subject]
- Keep Finalizar ciclo atual button
- Add success Notice when cycle advances with next subject name
- Removed registerQuickSession method from Dashboard
CSS:
- .corvo-cycle-card, .corvo-cycle-main, .corvo-cycle-value
- .corvo-cycle-context bar styling
- .corvo-cycle-action spacing
All 97 tests passing
- Separate reorder arrows into dedicated narrow column (⇅)
- Click on Status cell to toggle active/inactive (no icon needed)
- Actions column now only shows Edit icon
- Add CSS for status cells with hover effect and active/inactive colors
- Reorder buttons are compact (22px) and minimal
All 96 tests passing
Creation flow redesign:
- Replace accordion/disclosure with floating + button in section header
- Click + opens inline creation form (not collapsed)
- Form is a card with Cancel and Create buttons
- After creation, form auto-hides
- Same pattern applied to all 5 tabs: Contests, Cycle, Items, Topics, Sessions
Workspace location:
- Change openCorvoView from getRightLeaf (sidebar) to getLeaf (main tab)
- Plugin now opens as a full workspace tab instead of side panel
New DomHelpers:
- createInlineForm() - creates card with form + cancel + submit
CSS:
- .corvo-create-form for inline creation forms
- .corvo-form-actions for action buttons
Mock update:
- Add getLeaf() to Workspace mock for main tab opening
All 96 tests passing
new features:
- export to csv for all 5 entity types (sessions, items, topics, subjects, contests)
- CsvExportService handles escaping, headers, utf-8 bom for excel
- ExportToCsvUseCase with per-tab export buttons
- download icon added to icon constants
bug fixes:
- fix fake save in ItemsTab: wire UpdateStudyItemUseCase
- fix fake save in SessionsTab: wire UpdateStudySessionUseCase
- fix fake save in TopicsTab: wire UpdateTopicUseCase
refactoring:
- add createCell() to DomHelpers (used in 5 tabs)
- add notifyError() to DomHelpers
- add .corvo-section-header css for title + export button layout
- remove duplicate createCell() from all tab components
- use DomHelpers.createCell everywhere
all 96 tests passing
- replace disconnected 'Editar' disclosures below table with inline row editing
- click pencil icon on a row to edit tempo and etapa directly in the table
- editing row shows compact input fields for tempo and etapa
- save (check icon) and cancel (x icon) buttons in the actions column
- reorder buttons (up/down) remain available while editing
- add .corvo-editing-row CSS for visual feedback
- add .corvo-input-compact for inline inputs (80px width)
- remove the old renderSubjectConfigForm and table disclosures
- rebuild plugin and auto-copy to sample vault
all 96 tests passing
- refactor all 20 use cases to use EntityRepository pattern
- integrate ActiveContestGuard into 6 query use cases
- add input validation layer with 14 validators
- create 3 domain services (Subject, StudySession, QuestionNotebook)
- optimize UI rendering with incremental tab updates
- transform all 9 entities from interfaces to rich classes
- add JSDoc to all use cases, services, entities, and UI components
- add comprehensive tests: 96 tests (up from 23, 317% increase)
all 96 tests passing