plok.sh
●●●●●
plok.sh
●●●●●
plok.sh
/harmoneer/taman/second
←All posts

Buy Me a Coffee at ko-fi

🌱 Taman Devlog #2 — From Concepts to Working Prototype

Welcome back to Taman, the Rust TUI Pomodoro app where your focus sessions literally grow plants! In Devlog #1, we laid out the architecture, UI concepts, emoji plant design, and early stats ideas. Now, just a short time later, we’re excited to share how those concepts have evolved into a fully functional prototype.

This devlog covers the implementation of real charts, polished navigation, scrollbar fixes, and the transition from “idea” to “usable app.” Let’s see how we’ve grown since the seed stage!


🌿 Recap: What Was Planned in Devlog #1

  • Architecture: Modular Rust codebase with separate UI tabs communicating via AppState
  • Timer Tab: Big timer, gauge, session types, auto-run queue
  • Plant Tab: Emoji-based plant display with progress tracking
  • Stats Tab: Daily metrics with multiple chart types (sparkline, bar, line, pie)
  • Settings Tab: Adjustable durations and theme selection
  • Persistence: JSON-based saving/loading
  • Themes: System, Rose Pine Light/Dark
  • Next Steps: Real charts, pie charts, garden history, navigation polish, packaging

🌻 Current Progress: Prototype Complete

Since Devlog #1, we’ve implemented nearly all planned features, transforming Taman from a concept into a working TUI app. The app is built in Rust using:

  • ratatui for core TUI widgets (BarChart, List, Scrollbar, etc.)
  • tui-big-text for large timer and streak displays
  • tui-piechart for pie chart visualizations
  • crossterm for terminal backend and input handling
  • serde / JSON for data persistence

Here’s what’s been built:

⏳ Timer Tab — Fully Functional with Auto-Run

  • Big Timer Display: Using the tui-big-text crate for large, readable digits
  • Progress Gauge: Visual session completion indicator
  • Session Selection: Keyboard-navigable blocks for Focus, Short Break, Long Break
  • Auto-Run Queue: Add sessions to a queue that runs automatically
  • Scrollbar Integration: Fixed positioning at the right border with proper state management (content length, viewport, position)
  • Navigation: Tab between blocks, start/pause/stop with keyboard only

The timer now supports the full Pomodoro workflow, including auto-advancing through queued sessions. The scrollbar was a recent fix — it now moves correctly and sits flush with the block border.

🌿 Plant Tab — Cute and Simple

  • Emoji Plant Display: Current stage (🌰 Seed → 🍃 Sprout → 🌱 Seedling → 🌿 Young Plant → 🪴 Fully Grown Plant)
  • Progress Tracking: Sessions completed toward next stage
  • Garden Stats: Total plants grown
  • Growth Logic: Each focus session advances the plant; completion archives it and starts a new seed

This tab remains intentionally minimal — just the plant, progress, and a touch of gamification without distractions.

📊 Stats Tab — Real Charts Implemented

  • Daily Metrics: Total sessions, minutes, focus/break breakdowns
  • Chart Types:
    • Bar Chart: Trends over time for sessions, minutes, focus/break data
    • Pie Chart: Breakdowns of focus vs. break time
  • Interactive UI: Left panel selects metric category, right panel updates chart
  • Data Aggregation: Daily stats with historical tracking

Charts are now fully functional using Ratatui’s BarChart and the third-party tui-piechart crate, providing visual insights into productivity patterns.

⚙️ Settings Tab — Configurable and Auto-Saving

  • Duration Settings: Adjustable focus, short break, long break times
  • Theme Selection: Switch between System, Rose Pine Light, Rose Pine Dark
  • Dual-Block Layout: Categories on left, values on right
  • Auto-Save: Changes persist immediately via JSON

Settings are live-updatable and theme changes apply instantly.

🗂️ Persistence & Storage

  • JSON Format: Matches the planned structure with current plant, garden history, daily stats, and settings
  • Auto-Save: Progress saves on session completion or app exit
  • Loading: Restores state on startup

🎨 Themes & UI Polish

  • Theme Support: Three themes with consistent colors for blocks, text, highlights
  • Navigation: Smooth tab/block switching with visual feedback
  • Scrollbar Styling: Custom colors to match theme (thumb in text color, track in secondary)

🧱 Architecture Updates

The codebase has solidified around the planned structure:

src/
├─ main.rs
├─ app.rs          // Global state + tab management
├─ input.rs        // Keyboard event handling
├─ timer.rs        // Pomodoro logic + auto-run
├─ plant.rs        // Emoji plant model
├─ garden.rs       // History + streaks
├─ storage.rs      // JSON persistence
├─ theme.rs        // Theme definitions
└─ ui/
  ├─ mod.rs
  ├─ timer_ui.rs   // Timer tab (recent scrollbar fixes)
  ├─ plant_ui.rs   // Plant display
  ├─ stats_ui.rs   // Charts + metrics
  └─ settings_ui.rs // Config interface

Each tab renders independently, communicating through AppState. The app handles input, updates state, and redraws the UI in a clean event loop.


🚀 Key Improvements Since Devlog #1

  • Charts Are Real: Moved from “UI concept” to actual Ratatui chart implementations
  • Pie Chart Added: Breakdown of focus vs. break time
  • Scrollbar Fixed: Proper state management, positioning, and styling
  • Navigation Polished: Block-based tabbing, visual selection indicators
  • Themes Implemented: Full theme switching with consistent styling
  • Persistence Working: JSON save/load with daily stats
  • Auto-Run Queue: Full Pomodoro automation
  • UI Consistency: Borders, colors, and spacing refined

What started as ASCII canvas experiments evolved into emoji plants. Charts went from “planned” to “implemented.” The app now feels like a complete, usable tool.


🐛 Bugs Squashed & Polish

  • Fixed scrollbar not moving (missing content/viewport lengths)
  • Positioned scrollbar at block border (overlapping for clean look)
  • Ensured theme colors apply to all UI elements
  • Handled edge cases in stats aggregation
  • Improved keyboard responsiveness

🌳 What’s Coming Next?

With the prototype complete, our next milestone is:

  • More Themes: Expanding theme options for better customization
  • Packaging & Release: Crates.io publish, binary distributions
  • User Testing: Feedback on usability and features
  • Potential Expansions: Sound notifications, integrations?

🌻 Closing Thoughts

Taman has grown from a collection of ideas into a working Pomodoro app with real charts, themes, and plant growth! The emoji plant concept works beautifully — simple, cross-terminal compatible, and genuinely motivating.

Devlog #1 set the vision; this one shows the execution. We’re excited to share this with the Rust/TUI community soon. If you’re building TUIs or productivity tools, we’d love to hear your thoughts!

🌿 Keep focusing, keep growing.

Taman is out! cargo install taman

←All posts
plok.sh·GitHub to blog, instantly↑ Back to top

On this page

  • 🌱 Taman Devlog #2 — From Concepts to Working Prototype
  • 🌿 Recap: What Was Planned in Devlog #1
  • 🌻 Current Progress: Prototype Complete
  • ⏳ Timer Tab — Fully Functional with Auto-Run
  • 🌿 Plant Tab — Cute and Simple
  • 📊 Stats Tab — Real Charts Implemented
  • ⚙️ Settings Tab — Configurable and Auto-Saving
  • 🗂️ Persistence & Storage
  • 🎨 Themes & UI Polish
  • 🧱 Architecture Updates
  • 🚀 Key Improvements Since Devlog #1
  • 🐛 Bugs Squashed & Polish
  • 🌳 What's Coming Next?
  • 🌻 Closing Thoughts