Commit graph

29 commits

Author SHA1 Message Date
Luiz Gustavo
f9bdfc042d fix(release): address automated review findings 2026-07-18 10:54:43 -03:00
Luiz Gustavo
ae919808d4 fix(ui): remove navigation rail label 2026-07-17 20:48:47 -03:00
Luiz Gustavo
bd8093fdfc fix(ui): clarify subject cycle status 2026-07-17 20:47:04 -03:00
Luiz Gustavo
6e9d3ca06b fix(ui): soften active contest status 2026-07-17 20:44:36 -03:00
Luiz Gustavo
b4e6450a0d feat(ui): link dashboard to study records 2026-07-17 20:43:07 -03:00
Luiz Gustavo
b7f0229b12 fix(ui): align status icons and selectors 2026-07-17 20:40:53 -03:00
Luiz Gustavo
6d3b402a7d refactor(ui): flatten study workspace 2026-07-17 20:32:44 -03:00
Luiz Gustavo
47e197df48 feat(ui): redesign Obsidian workspace 2026-07-17 20:17:13 -03:00
Luiz Gustavo
5d7c27186c refactor(ui): simplify study workspace layout 2026-07-16 23:06:16 -03:00
Luiz Gustavo
2793fba430 Revert "refactor(ui): use field cards in tables"
This reverts commit 43f69e38e9.
2026-07-15 20:23:12 -03:00
Luiz Gustavo
43f69e38e9 refactor(ui): use field cards in tables 2026-07-15 20:22:02 -03:00
Luiz Gustavo
c3ff030c7d refactor(ui): share scannable metric layout 2026-07-15 20:18:42 -03:00
Luiz Gustavo
8b381c463c fix(cycle): simplify plan row layout 2026-07-15 20:12:42 -03:00
Luiz Gustavo
2d3ebd08b8 refactor(cycle): show plan as cards 2026-07-15 20:10:49 -03:00
Luiz Gustavo
cd34a55607 refactor(ui): standardize editing controls 2026-07-15 19:57:36 -03:00
Luiz Gustavo
774dc48419 feat(sessions): filter study history 2026-07-15 19:37:01 -03:00
Luiz Gustavo
ea8d3d8e34 refactor(ui): polish study workflow 2026-07-15 19:28:01 -03:00
Luiz Gustavo
6ac9f3b87b fix(a11y): accessible tabs, modal focus trap, confirm dialogs
- Tab bar: role=tablist/tab, aria-selected, roving tabindex, arrow-key
  navigation and Enter/Space activation.
- Modal: role=dialog, aria-modal, aria-labelledby, focus trap, Escape to
  close, focus restore on close.
- Icon-only buttons now expose aria-label.
- Replace native window.confirm() deletes with an Obsidian-style confirm
  dialog (ContestsTab, ItemsTab, SessionsTab, TopicsTab).
- Add visible :focus-visible styles for buttons, inputs and selects.

Closes #3
2026-07-02 23:13:26 -03:00
Luiz Gustavo
354b7cbf69 feat: rename plugin to leif 2026-06-12 08:02:34 -03:00
Luiz Gustavo
f30af02588 fix: remove duplicated separator line between card title and table
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
2026-06-12 06:02:34 -03:00
Luiz Gustavo
6fcb9eae90 refactor: remove up/down arrows from display mode in CycleTab
- Reorder arrows now only appear in edit mode
- Removed dedicated reorder column from display rows
- Kept up/down arrows in edit mode actions column
- Removed unused reorder CSS classes

All 97 tests passing
2026-06-12 05:54:48 -03:00
Luiz Gustavo
19eeb54d24 feat: visual cycle context + success feedback
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
2026-06-12 05:52:02 -03:00
Luiz Gustavo
195da92856 refactor: declutter cycle tab actions
- 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
2026-06-11 23:07:04 -03:00
Luiz Gustavo
86a49e36ca feat: redesign creation UI and open in main workspace
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
2026-06-11 23:04:23 -03:00
Luiz Gustavo
eb6933766a feat: export to csv + fix inline edit save + qa pass
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
2026-06-11 22:57:01 -03:00
Luiz Gustavo
9980aeb4bb refactor: unify CRUD pattern across all UI tabs
unified crud pattern for all 6 tabs:
- contests: table with inline edit (name, notes) + delete + activate
- cycle: inline edit for tempo/etapa + reorder + toggle
- items: table + inline edit (peso, questoes) + expand row for resource refs
- topics: table + inline edit + expand row for resource refs + notebook
- sessions: table + inline edit (quantidade) + delete
- wall: structured form + snapshots table

new use cases:
- delete contest, delete study item, delete topic
- update contest (name + notes)

new domhelpers:
- createcrudtable() - builds table with tbody reference
- createcrudactions() - standard edit+delete buttons
- createcompactinput() - for inline editing

new css:
- .corvo-detail-row for expandable detail rows
- .corvo-detail-form for forms inside detail rows
- .corvo-detail-list for reference lists
- .corvo-expand-button styling

all 96 tests passing
2026-06-11 22:51:37 -03:00
Luiz Gustavo
f972a6f086 refactor: inline editing for cycle tab
- 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
2026-06-11 22:45:40 -03:00
Luiz Gustavo
8448643da0 feat: replace text buttons with icon-only buttons in interactive places
- add createIconButton helper to DomHelpers with tooltip support
- add .corvo-icon-button CSS styling (32x32, icon-only, hover state)
- update CycleTab: Subir/Descer/Ativar/Desativar now use icon-only buttons
  - Subir: arrow-up icon
  - Descer: arrow-down icon
  - Ativar/Desativar: toggle-right/toggle-left icon
- update SessionsTab: Excluir now uses trash-2 icon button
- change up/down icons from chevron to arrow in constants
- update sample vault with rebuilt plugin
2026-06-11 22:38:28 -03:00
Luiz Gustavo
1ca9bc3672 refactor: complete all remaining codebase refinements
- 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
2026-06-11 22:34:00 -03:00