Compare commits

90 Commits

Author SHA1 Message Date
lashman 04fa2a8087 Update README.md 2026-03-09 16:30:09 +02:00
Your Name 4ca553784e replace double dashes with single dashes in README 2026-02-19 20:23:01 +02:00
Your Name 3d7dc4f875 bump to v1.1.0: accessibility, filter bar fix, updated README 2026-02-19 20:15:01 +02:00
Your Name 6012166d99 add aria-labels to TopBar buttons and CalendarPopover 2026-02-19 19:56:47 +02:00
Your Name 0b155c6023 add ARIA labels and pressed states to board list and remaining components 2026-02-19 19:55:30 +02:00
Your Name d66e90a6d5 add ARIA labels, pressed states, and fix keyboard visibility across card detail components 2026-02-19 19:54:22 +02:00
Your Name 56eab06dc4 add labels and ARIA attributes to filter bar inputs 2026-02-19 19:51:56 +02:00
Your Name 68442ec784 add ARIA tab roles, pressed states, and labels to settings dialog 2026-02-19 19:50:54 +02:00
Your Name 6ca8cfb059 add dialog semantics, focus trap, and ARIA labels to card detail modal 2026-02-19 19:49:25 +02:00
Your Name 21e09279eb improve card thumbnail accessibility: aging opacity, ARIA labels 2026-02-19 19:48:08 +02:00
Your Name 3d2fc5a09d fix column header keyboard visibility and ARIA labels 2026-02-19 19:46:58 +02:00
Your Name 4fa0f486f5 add skip navigation, page title, and global ARIA live region 2026-02-19 19:45:51 +02:00
Your Name 2044a7026d make toasts accessible: ARIA live region, dismiss button, pause on hover 2026-02-19 19:44:06 +02:00
Your Name b1c5e9caa9 fix focus ring contrast across UI primitives 2026-02-19 19:43:00 +02:00
Your Name 7c4941ada4 fix contrast tokens, focus rings, and scrollbar visibility for WCAG AAA 2026-02-19 19:42:04 +02:00
Your Name c921826f55 clean up unused files and update gitignore 2026-02-19 19:15:55 +02:00
Your Name 8492ffcfb7 fix card click delay when reduced motion is active
Skip layoutId and use instant transitions on the card detail modal
when reduced motion is on. The shared layout animation kept the z-50
overlay in the DOM during its exit spring, blocking all card clicks
until it settled.
2026-02-16 18:51:35 +02:00
Your Name 25f71544f0 fix layout animation blocking card clicks when reduce motion is on
Skip Framer Motion layout/layoutId props on cards when reduced motion
is active. These props cause pointerEvents:none during layout
transitions, making cards unclickable for ~1s after any layout shift.
2026-02-16 18:38:04 +02:00
Your Name 30263d6ac7 add reduce motion toggle and bump to v1.0.1
Add in-app reduce motion setting under Settings > Appearance so users
can disable animations without changing their OS preference. Applies a
.reduce-motion CSS class to kill all CSS transitions/animations and
wraps the app in MotionConfig to globally disable Framer Motion springs,
layout animations, and enter/exit transitions. Setting persists to disk.

Also removes leftover default Square*.png icons and bumps version to
1.0.1.
2026-02-16 17:51:23 +02:00
Your Name d1636745f1 add custom app icon - teal squircle with lighthouse 2026-02-16 16:07:20 +02:00
Your Name 9cc3d55cbf bump version to 1.0.0 2026-02-16 15:51:57 +02:00
Your Name d244bd1f19 replace fancy unicode punctuation with ASCII equivalents
Em dashes, en dashes, arrows, and ellipsis replaced with
--, -, ->, and ... respectively throughout README.
2026-02-16 15:49:53 +02:00
Your Name fd0fe2cdcc fix README: Windows-only portable exe, remove default icon
- Platform is Windows only, single portable exe
- Remove icon image reference (using default Tauri icon)
- Use emoji header instead
- Update clone URLs to point to Gitea instance
- Remove installer/macOS/Linux references
2026-02-16 15:45:00 +02:00
Your Name 59aaa688bb add README, CC0 license, and button icon alignment fix
- Comprehensive README with full feature docs, settings reference,
  keyboard shortcuts, data storage layout, and build instructions
- CC0 1.0 Universal public domain dedication
- Fix button icon/text vertical alignment (leading-none + svg translate)
- Lock Cargo dependencies
2026-02-16 15:40:28 +02:00
Your Name 414c1f7d68 feat: typography overhaul, custom scrollbars, import/export, settings UI
Includes changes from prior sessions: Epilogue + Space Mono fonts,
OverlayScrollbars integration, markdown editor fixes, settings dialog,
import/export buttons, and various UI refinements.
2026-02-16 14:56:36 +02:00
Your Name 8dedbf6032 docs: add 15-improvements design doc and implementation plan
Also tracks Cargo.lock and BoardCardOverlay component from prior sessions.
2026-02-16 14:56:22 +02:00
Your Name 2e2740427e feat: Phase 4 - board templates, auto-backup, version history
- BoardTemplate type and storage CRUD (save/list/delete templates)
- createBoardFromTemplate factory function
- "Save as Template" in board card context menu
- User templates shown in NewBoardDialog with delete option
- Auto-backup on save with 5-minute throttle, 10 backup retention
- VersionHistoryDialog with backup list and restore confirmation
- Version History accessible from board settings dropdown
2026-02-16 14:55:58 +02:00
Your Name 6340beb5d0 feat: Phase 3 - filter bar, keyboard navigation, notifications, comments
- FilterBar component with text search, label chips, due date and priority dropdowns
- "/" keyboard shortcut and toolbar button to toggle filter bar
- Keyboard card navigation with J/K/H/L keys, Enter to open, Escape to clear
- Focus ring on keyboard-selected cards with auto-scroll
- Desktop notifications for due/overdue cards via tauri-plugin-notification
- CommentsSection component with add/delete and relative timestamps
- Filtered card count display in column headers
2026-02-16 14:52:08 +02:00
Your Name e535177914 feat: Phase 2 card interactions - priority picker, context menu, WIP limits, column collapse, checklist reorder
- PriorityPicker component with 5 colored chips in card detail modal
- Card context menu: Move to column, Set priority, Duplicate, Delete
- duplicateCard store action (clones card, inserts after original)
- Column WIP limits with amber/red indicators when at/over limit
- Column collapse/expand to 40px vertical strip
- Checklist item drag reordering with grip handle
- Comment store actions (addComment, deleteComment) for Phase 3
2026-02-16 14:46:20 +02:00
Your Name 8ca3b81e92 feat: Phase 1 quick wins - defaultColumnWidth, due date colors, card aging, open attachments 2026-02-16 14:33:48 +02:00
Your Name 02ef3acbfe feat: Phase 0 data model - add Comment, Priority, collapsed, wipLimit fields 2026-02-16 14:31:56 +02:00
Your Name c6fea186ef feat: custom scrollbars, portable storage, window state persistence
- Custom scrollbar CSS using ::-webkit-scrollbar for Tauri's Chromium WebView
- Portable storage: all data written next to exe in data/ folder instead of AppData
- Rust get_portable_data_dir command with runtime FS scope for exe directory
- Window size/position/maximized saved to settings on close, restored on startup
2026-02-15 22:18:50 +02:00
Your Name bc12b5569a feat: custom calendar date picker replacing native input
Build fully custom CalendarPopover with date-fns + Radix Popover.
Month/year dropdown selectors, today button, clear button, past
dates dimmed. Rewrite DueDatePicker to use it instead of <input type=date>.
2026-02-15 22:04:31 +02:00
Your Name 03e0b132da docs: add custom date picker design document 2026-02-15 21:58:10 +02:00
Your Name 9365d16452 fix: replace onCloseRequested with beforeunload to fix window close
The Tauri onCloseRequested async handler was preventing the window
from actually closing. Using beforeunload for the save flush instead.
2026-02-15 21:46:44 +02:00
Your Name 21302bdfe9 feat: redesign card detail modal as 2-column dashboard grid
Replace 60/40 split layout with a 2x3 CSS grid where all sections
get equal weight. Cover color header, progress bar on checklist,
compact markdown editor, scroll containment on long lists.
2026-02-15 21:41:16 +02:00
Your Name 63b7de0e6f fix: window controls, dragging, and text selection
- Add Tauri permissions for window minimize/maximize/close/drag
- Rewrite WindowControls with plain buttons + stopPropagation
  to prevent drag region from capturing button clicks
- Add data-tauri-drag-region to TopBar child containers
- Make OpenPylon text pointer-events-none and select-none
2026-02-15 21:19:24 +02:00
Your Name 85c54a3768 feat: add micro-animations to TopBar, toasts, settings, and shortcut help 2026-02-15 21:01:10 +02:00
Your Name 24219bb212 feat: gesture-reactive drag overlay with tilt based on pointer velocity 2026-02-15 21:01:06 +02:00
Your Name feccc4e17a feat: shared layout animation - card expands into detail modal 2026-02-15 21:00:29 +02:00
Your Name 1e14edda6c feat: add column stagger + card stagger + card hover/tap animations 2026-02-15 20:58:53 +02:00
Your Name 3a3c3bd2e1 feat: add stagger animations to board list and board cards 2026-02-15 20:58:03 +02:00
Your Name 1ecf04efcf feat: add AnimatePresence page transitions between views 2026-02-15 20:58:01 +02:00
Your Name 3d8bbc9ebb feat: custom window titlebar - remove native decorations, add WindowControls to TopBar 2026-02-15 20:56:55 +02:00
Your Name 6f5415c9f5 feat: lighten dark mode for HDR monitors - bump pylon + shadcn values 2026-02-15 20:56:35 +02:00
Your Name 275b663934 feat: add shared motion config with spring presets and variants 2026-02-15 20:56:29 +02:00
Your Name 3703857ccf docs: add motion, dark mode & titlebar implementation plan
13-task plan covering shared motion config, dark mode CSS tuning,
custom window titlebar, page transitions, stagger animations,
shared layout card-to-modal animation, gesture-reactive drag,
and micro-interactions across all components.
2026-02-15 20:55:31 +02:00
Your Name 1e487e95a1 docs: add motion, dark mode & custom titlebar design
Design document covering three visual improvements:
- Playful bouncy Framer Motion animations for every interaction
- Subtle dark mode lift for HDR monitors (18-22% → 25-30% lightness)
- Custom window titlebar merged into TopBar with accent-colored controls
2026-02-15 20:51:53 +02:00
Your Name 46c0df3ab8 feat: add themed scrollbar styling for light and dark modes 2026-02-15 20:34:04 +02:00
Your Name e4edc201b9 feat: upgrade empty states with welcome message and column placeholders 2026-02-15 20:33:16 +02:00
Your Name fffa565423 feat: add board background patterns (dots, grid, gradient) with settings dropdown 2026-02-15 20:32:43 +02:00
Your Name e5e9483a8e feat: add keyboard shortcut help modal triggered by ? key 2026-02-15 20:32:32 +02:00
Your Name fde10d1a3c feat: add undo/redo buttons to TopBar with tooltips 2026-02-15 20:31:35 +02:00
Your Name 6341897487 feat: add toast notification system with success, error, and info variants 2026-02-15 20:30:17 +02:00
Your Name 61a5f11f25 feat: add card cover color with picker in card detail and bar in thumbnail 2026-02-15 20:29:29 +02:00
Your Name 0ef77bc470 feat: add column color picker submenu with 10 preset colors 2026-02-15 20:29:18 +02:00
Your Name 1556529307 feat: add column color, card coverColor, and board background to data model 2026-02-15 20:28:16 +02:00
Your Name f303d61677 feat: apply board color to TopBar border and column header accents 2026-02-15 20:26:51 +02:00
Your Name c2928afb11 feat: rewrite settings dialog with tabbed panel - appearance, boards, shortcuts, about 2026-02-15 20:25:58 +02:00
Your Name a7c9c83bb0 feat: apply density factor to card, column, and board spacing 2026-02-15 20:25:34 +02:00
Your Name aa91ef35c8 feat: add density CSS variable with default value 2026-02-15 20:24:19 +02:00
Your Name c08efb5171 feat: wire app store with appearance actions and CSS variable application 2026-02-15 20:24:09 +02:00
Your Name 03a089efda feat: expand AppSettings with appearance and board default fields 2026-02-15 20:23:47 +02:00
Your Name a9d1ae3a28 fix: use Tauri v2 named fs permissions for appdata access 2026-02-15 20:22:54 +02:00
Your Name 1d99473a22 docs: add visual glow-up implementation plan with 17 tasks
Detailed step-by-step plan covering settings infrastructure,
UI zoom, accent colors, density, board/column/card colors,
toasts, keyboard help, backgrounds, onboarding, and polish.
2026-02-15 20:18:38 +02:00
Your Name fceaf60462 docs: add visual glow-up design document
Comprehensive design for 12 visual polish improvements including
settings infrastructure, UI zoom, accent colors, density toggle,
board/column/card colors, toasts, and onboarding.
2026-02-15 20:14:10 +02:00
Your Name 557cf461db fix: broaden filesystem scope to include $APPDATA root directory
The glob pattern $APPDATA/openpylon/** didn't match the openpylon
directory itself, causing exists() checks to fail with a forbidden
path error on app startup.
2026-02-15 19:44:56 +02:00
Your Name fa52a28749 fix: correct lib crate name in main.rs (temptauri_lib -> openpylon_lib) 2026-02-15 19:38:50 +02:00
Your Name c590146be0 fix: address code review findings - data loss, race condition, broken features
- TopBar: call closeBoard() before navigating back to prevent data loss
- board-store: guard debouncedSave against race condition when board is
  closed during an in-flight save
- board-store: add missing updatedAt to setColumnWidth
- useKeyboardShortcuts: remove duplicate Ctrl+K handler that prevented
  command palette from toggling closed
- AttachmentSection: wire up Tauri file dialog for adding attachments
  with link/copy mode support
2026-02-15 19:33:25 +02:00
Your Name 2a81849c8d fix: move hooks before early return in BoardView, remove unused attachmentMode prop
Fixed React hooks rules violation where useState and useCallback were
called after a conditional return in BoardView. Removed unused
attachmentMode prop from AttachmentSection (can be re-added when file
dialog is wired up).
2026-02-15 19:30:58 +02:00
Your Name 07a4275e8c feat: add window close handler, configure minimum window size
Flush pending board saves on window close via Tauri's onCloseRequested.
Set minimum window dimensions to 800x600.
2026-02-15 19:24:00 +02:00
Your Name 4638ce046c feat: accessibility pass - semantic HTML, ARIA, focus indicators, high contrast 2026-02-15 19:19:34 +02:00
Your Name e2ce484955 feat: add Framer Motion animations with spring physics and reduced-motion support 2026-02-15 19:17:52 +02:00
Your Name e020ba6e8b feat: add import/export for JSON, CSV, and Trello formats 2026-02-15 19:14:06 +02:00
Your Name 491c089be6 feat: add global keyboard shortcuts for undo/redo and command palette 2026-02-15 19:13:36 +02:00
Your Name e9318df6f6 feat: add settings dialog with theme selection 2026-02-15 19:13:13 +02:00
Your Name 5b3bf2b058 feat: add command palette with cross-board search and actions 2026-02-15 19:12:49 +02:00
Your Name b527d441e3 feat: add two-panel card detail modal with markdown, checklist, labels, dates, attachments
- CardDetailModal: two-panel layout (60/40) with inline title editing
- MarkdownEditor: edit/preview toggle with react-markdown + remark-gfm
- ChecklistSection: add/toggle/edit/delete items with progress counter
- LabelPicker: toggle labels + create new labels with color swatches
- DueDatePicker: date input with relative time and overdue styling
- AttachmentSection: list with remove, placeholder add button
- Wired into BoardView via selectedCardId state
2026-02-15 19:05:02 +02:00
Your Name 86de747bc4 feat: add drag-and-drop for cards and columns with keyboard support 2026-02-15 18:55:35 +02:00
Your Name 624be051c1 feat: add card thumbnails with label dots, due dates, and checklist progress bar 2026-02-15 18:49:20 +02:00
Your Name a68b6c7b8c feat: add board view with columns, headers, and inline card creation 2026-02-15 18:49:10 +02:00
Your Name fbff4bc855 feat: add board list home screen with new board dialog and context menu 2026-02-15 18:48:59 +02:00
Your Name d369ae6644 feat: add app shell with top bar, view routing, and board factory 2026-02-15 18:44:19 +02:00
Your Name be933f5383 feat: configure custom OKLCH theme, fonts, and dark mode tokens 2026-02-15 18:43:23 +02:00
Your Name bf5e9ff8b6 feat: add Zustand stores with undo/redo and debounced persistence
- App store: theme, view routing, board list, settings
- Board store: all card/column/label/checklist/attachment mutations
- zundo temporal middleware for undo/redo (50 step limit)
- Debounced saves (500ms) with immediate flush on close
2026-02-15 18:41:27 +02:00
Your Name 8b49f2afd1 feat: add filesystem persistence layer for boards and settings 2026-02-15 18:39:24 +02:00
Your Name 7818a446ca feat: add board/settings type definitions and Zod validation schemas 2026-02-15 18:38:20 +02:00
Your Name 13cda71721 feat: scaffold Tauri v2 + React + TS with all dependencies
- Tauri v2 with React 19 + TypeScript + Vite 7
- Tauri plugins: fs, dialog, shell (registered in lib.rs)
- Filesystem permissions scoped to $APPDATA/openpylon/**
- Tailwind CSS v4 via @tailwindcss/vite
- shadcn/ui initialized with 12 components
- All app dependencies: Zustand, zundo, dnd-kit, Framer Motion,
  Zod, ulid, date-fns, react-markdown, remark-gfm
- Path alias @/* configured in tsconfig + vite
2026-02-15 18:31:54 +02:00
Your Name d167d0aa0b Add OpenPylon implementation plan (18 tasks)
Detailed step-by-step plan covering scaffold, types, storage,
stores, UI components, drag-and-drop, command palette, import/export,
animations, accessibility, and production build.
2026-02-15 18:15:14 +02:00
Your Name c4966f5f6d Add OpenPylon Kanban board design document
Comprehensive design spec for a local-first Kanban desktop app
covering architecture, data model, UI design, accessibility,
import/export, and interaction patterns.
2026-02-15 18:09:22 +02:00
7 changed files with 10 additions and 5 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"]
}
+2
View File
@@ -398,5 +398,7 @@ See [LICENSE](LICENSE) or https://creativecommons.org/publicdomain/zero/1.0/ for
Made with care. Shared without conditions.
<br />
Your tools should serve you - not the other way around.
<br />
This project is developed with the help of a locally-run LLM via opencode for scaffolding, planning, and routine code tasks. Architecture and design decisions are my own.
</sub>
</p>
@@ -47,7 +47,7 @@ export function ImportButton() {
addToast("Board imported successfully", "success");
} catch (err) {
console.error("Import failed:", err);
addToast("Import failed - check file format", "error");
addToast("Import failed check file format", "error");
}
// Reset the input so the same file can be re-imported
+1 -1
View File
@@ -148,7 +148,7 @@ export function SettingsDialog({ open, onOpenChange }: SettingsDialogProps) {
))}
</div>
{/* Tab content - entire dialog height animates between tabs */}
{/* Tab content entire dialog height animates between tabs */}
<AnimatePresence mode="popLayout" initial={false}>
<motion.div
key={tab}
+1 -1
View File
@@ -150,7 +150,7 @@
scrollbar-color: oklch(80% 0 0 / 15%) transparent;
}
/* Hide native scrollbars - OverlayScrollbars renders custom ones */
/* Hide native scrollbars OverlayScrollbars renders custom ones */
::-webkit-scrollbar {
width: 0;
height: 0;
+1 -1
View File
@@ -15,7 +15,7 @@ import type { AppSettings } from "@/types/settings";
import type { BoardTemplate } from "@/types/template";
// ---------------------------------------------------------------------------
// Path helpers - portable: all data lives next to the exe
// Path helpers portable: all data lives next to the exe
// ---------------------------------------------------------------------------
async function getBaseDir(): Promise<string> {
+1 -1
View File
@@ -212,7 +212,7 @@ export const useAppStore = create<AppState>((set, get) => ({
if (order === "created") {
return [...boards].sort((a, b) => b.createdAt.localeCompare(a.createdAt));
}
// "updated" - default, already sorted from listBoards
// "updated" default, already sorted from listBoards
return boards;
},
}));