Releases: robbiebyrd/classicy
Terminator
This release makes progress towards packaging Classicy as an npm package that can be used by other developers. Currently, Classicy components are not directly importable; however, I will fix that in time. This is a preview release only; breaking changes are most likely imminent.
You can view the Classicy package in npm here.
Full Changelog: https://github.com/robbiebyrd/classicy/commits/v0.5.3
SixPack
A few minor tweaks to some of the built in apps, but nothing special.
This will be the last release that is a Next.js app; future releases will be a package.
Full Changelog: v0.4.5...v0.4.6
Antares
Overview
This PR refactors the News and EPG applications by reorganizing menu definitions, enhancing entry filtering and pagination logic, adding time navigation controls, updating UI window rendering, and includes several housekeeping updates across core components and documentation.
The News and EPG applications are demonstrations of the technology, and not vital to the Classicy library.
Details
Enhance News and EPG applications by adding a File menu, pagination controls, and per-page settings; refactor time handling and window management; improve AppManager focus logic; introduce Finder launch checks; update documentation and clean up unused assets.
New Features:
- Add 'File' menu with Quit option to News and EPG applications
- Introduce pagination controls and per-page/thumbnail size settings in the News application
- Display detailed news items in separate windows with dynamic positioning and rich content rendering
Bug Fixes:
- Prevent pagination from exceeding available news entries
Enhancements:
- Refactor news entries filtering/slicing with timezone offsets
- Centralize EPG grid time jump functions and expose settings toggle
-Improve app focus logic in AppManager to focus the last open app - Add Finder icon state check based on open windows path
- Standardize iframe title in Browser component
Documentation:
- Update README header, demo link formatting, and note previous project name
Chores:
- Remove obsolete News titles.txt file
File-Level Changes
| Change | Details | Files |
|---|---|---|
| Refactor News app menu, entry filtering, pagination, and window rendering |
|
src/app/Applications/News/News.tsx |
| Add file menu to EPG and implement time navigation controls |
|
src/app/Applications/EPG/EPG.tsx |
| Update README formatting and link structure |
|
README.md |
| Simplify AppManager close logic and correct focus on last open app |
|
src/app/SystemFolder/ControlPanels/AppManager/ClassicyAppManager.ts |
| Handle Finder icon launch state separately |
|
src/app/SystemFolder/SystemResources/Desktop/ClassicyDesktopIcon.tsx |
| Streamline Finder component data initialization |
|
src/app/SystemFolder/Finder/Finder.tsx |
| Fix Browser iframe title attribute |
|
src/app/Applications/Browser/Browser.tsx |
| Remove obsolete News titles file |
|
src/app/Applications/News/titles.txt |
v0.4.4
Overview
This release implements a suite of UI component and layout enhancements across multiple control-panel managers and applications, extending background customization and sound toggling, refining component APIs, improving window styling, enriching the EPG app with a settings dialog and indicator refinement, and adding a new “News” application.
Details
Add custom desktop background URL support with alignment, repeat, and sizing controls; enhance core UI components and layouts; introduce individual sound toggles; extend popup menus; improve file browser and window styling; add EPG settings modal; and ship a new News application with paginated entries and detail windows.
New Features:
- Enable custom desktop background via URL with position, repeat, and size options
- Allow per-sound enable/disable controls in the Sound Manager
- Add a new News application with paginated listing and detail windows
- Provide a settings modal for the EPG application
Enhancements:
- Wrap window contents in a styled container with consistent background, padding, and box-sizing
- Switch control panel windows from modal to non-modal and adjust their initial sizes and positions
-Implement window title text overflow handling with ellipsis - Extend popup menus to accept icons, custom styles, and center alignment
- Improve file browser table column resizing behavior
Chores:
- Comment out trash icon dispatch (for now)
File-Level Changes
| Change | Details | Files |
|---|---|---|
| Custom background URL support in Appearance Manager |
|
ClassicyAppearanceManager.tsxClassicyDesktopManager.tsx |
| Uniform styled wrappers for control-panel windows |
|
ClassicyAppearanceManager.tsxClassicyDateAndTimeManager.app.tsxClassicySoundManager.tsx |
| Per-sound enable/disable logic in Sound Manager |
|
ClassicySoundManager.tsxClassicySoundManagerContext.tsx |
| EPG application settings UI and indicator tweaks |
|
EPG.tsxEPG.module.scss |
| Component API & behavior updates (Checkbox, RadioInput, PopUpMenu) |
|
id) signatures |
| File browser table resizing improvements |
|
ClassicyFileBrowserViewTable.tsxClassicyFileBrowserViewTable.module.scss |
| Window component styling and title truncation |
|
ClassicyWindow.tsxClassicyWindow.module.scss |
| Finder trash-icon dispatch commented out |
|
Finder.tsx |
| Demo app error-modal auto-focus and ID updates |
|
Demo.tsx |
| New News application |
|
News.tsxNews.module.scssentries.jsonpage.tsx |
v0.4.3
v0.4.3
A bug and cleanup release.
Overview
Refactor media and menu handling across multiple apps, streamline QuickTimePlayer into a lightweight shell using a new embed component, unify quit menu logic, and apply type, styling, and behavior fixes in EPG, date/time manager, and desktop icon detection.
New Features:
- Extract QuickTime video/audio rendering into a new QuickTimeVideoEmbed component
- Introduce a quitMenuItemHelper to standardize “Quit” menu entries across all applications
Bug Fixes:
- Enable scrolling in QuickTime window
- Remove stray console.log calls in file browser and finder contexts
Enhancements:
- Simplify QuickTimeMoviePlayer by delegating playback to the embed component and adjust default sample document
- Rename QuickTime app ID and restrict document type to 'audio' or 'video'
- Refine EPG: rename callsign to callSign, clarify unit comments, and improve grid indicator styling and z-index
- Export and rename QuickTimeContext document types, guard document array handling, and emit app open events on file changes
- Update Desktop icon detection to use the app ‘open’ flag instead of raw presence
- Rename date/time manager handlers and correct PM hour wrap logic
Chores:
- Clean up unused imports and remove inline quitApp functions across multiple components
Changelog
Full Changelog: v0.4.2...v0.4.3
v0.4.2
Summary
Introduce a full-fledged Electronic Program Guide (EPG) demonstration application, as well as modernize core infrastructure by refactoring window and file‐system management, unifying menu interfaces, and enhancing key UI components and styling.
Overview
This release implements a major refactor of the system app and window management architecture—migrating from array‐based storage to a keyed object store, streamlining event handlers, extracting and reshaping the file system model, modernizing React hooks and component APIs, and introducing a new EPG application with its own UI grid.
New Features:
- Add a new EPG application with a live channel guide grid and navigation controls
- Implement sortable columns in the file browser’s table view and dynamic icon grid layout
- Enable arrow‐key increment/decrement functionality in both DatePicker and TimePicker inputs
Bug Fixes:
- Fix Finder’s openPaths initialization to start empty instead of defaulting to a hardcoded path
- Correct synchronization of appMenu/menuBar assignments when focusing or opening windows
Enhancements:
- Refactor window manager state to use an appId-keyed map for faster lookups and simpler reducer logic
- Extract file‐system model and default content into dedicated modules and streamline ClassicyFileSystem usage
- Migrate components to direct hook imports (useState/useEffect/etc.), remove unnecessary Suspense, and consolidate menuBar and contextMenu naming
- Update ClassicyWindow to support error‐style dialogs, non‐movable error modals, and play error sounds
Chores:
- Rename core control-panel and manager components to a unified Classicy* naming convention
- Apply SCSS mixins and optimize style definitions for window borders, progress bars, and theme assets
Reviewer's Guide
This PR implements a major refactor of the system app and window management architecture—migrating from array‐based storage to a keyed object store, streamlining event handlers, extracting and reshaping the file system model, modernizing React hooks and component APIs, and introducing a new EPG application with its own UI grid.
Sequence diagram for window open/focus/close with new keyed app store
sequenceDiagram
participant User as actor User
participant AppManager as ClassicyAppManagerHandler
participant Store as ClassicyStore
participant App as ClassicyStoreSystemApp
participant Window as ClassicyStoreSystemAppWindow
User->>AppManager: openApp(appId, appName, appIcon)
AppManager->>Store: Store.System.Manager.App.apps[appId] = {...}
AppManager->>App: set open = true, windows = [...]
AppManager->>AppManager: focusApp(appId)
AppManager->>App: set focused = true
AppManager->>Window: set closed = false, focused = true
User->>AppManager: closeApp(appId)
AppManager->>App: set open = false, focused = false
AppManager->>Window: set closed = true
AppManager->>AppManager: focusApp(lastOpenApp())Class diagram for updated App and Window management
classDiagram
class ClassicyStoreSystemAppManager {
+apps: Record<string, ClassicyStoreSystemApp>
}
class ClassicyStoreSystemApp {
+id: string
+name: string
+icon: string
+windows: ClassicyStoreSystemAppWindow[]
+open: boolean
+focused: boolean
+noDesktopIcon: boolean
+openOnBoot: boolean
+data: any
}
class ClassicyStoreSystemAppWindow {
+id: string
+appId: string
+title: string
+icon: string
+size: [number, number]
+position: [number, number]
+minimumSize: [number, number]
+focused: boolean
+default: boolean
+closed: boolean
+hidden: boolean
+menuBar: ClassicyMenuItem[]
+contextMenu: ClassicyMenuItem[]
+showContextMenu: boolean
+options: Record<string, any>[]
+dragging: boolean
+moving: boolean
+modal: boolean
}
ClassicyStoreSystemAppManager "1" -- "*" ClassicyStoreSystemApp : apps
ClassicyStoreSystemApp "1" -- "*" ClassicyStoreSystemAppWindow : windowsClass diagram for refactored File System model
classDiagram
class ClassicyFileSystemEntryFileType {
<<enum>>
File
Shortcut
AppShortcut
Drive
Directory
}
class ClassicyFileSystemEntryMetadata {
+_type: ClassicyFileSystemEntryFileType
+_mimeType: string
+_label: string
+_comments: string
+_url: string
+_icon: string
+_badge: React.ReactNode
+_createdOn: Date
+_modifiedOn: Date
+_versions: ClassicyFileSystemEntry[]
+_readOnly: boolean
+_nameLocked: boolean
+_trashed: boolean
+_system: boolean
+_invisible: boolean
+_count: number
+_countHidden: number
+_path: string
+_data: any
+_size: number
+_name: string
}
class ClassicyFileSystemEntry {
+[entry: string]: any
+inherits ClassicyFileSystemEntryMetadata
}
ClassicyFileSystemEntry --|> ClassicyFileSystemEntryMetadataFile-Level Changes
| Change | Details | Files |
|---|---|---|
| Migrate App storage from arrays to key-indexed objects |
|
src/app/SystemFolder/ControlPanels/AppManager/ClassicyAppManager.tssrc/app/SystemFolder/SystemResources/Desktop/ClassicyDesktopManager.tsxsrc/app/SystemFolder/ControlPanels/AppManager/ClassicyAppManagerContext.tsx |
| Streamline window event handling and enrich action types |
|
src/app/SystemFolder/SystemResources/Desktop/ClassicyDesktopWindowManagerContext.tsx |
| Extract and type the file system model |
|
src/app/SystemFolder/SystemResources/File/DefaultClassicyFileSystem.tssrc/app/SystemFolder/SystemResources/File/ClassicyFileSystemModel.tssrc/app/SystemFolder/SystemResources/File/ClassicyFileSystem.ts |
| Modernize React components and unify APIs |
|
multiple components under src/app/SystemFolder/SystemResources (e.g. ClassicyWindow.tsx, ClassicyButton.tsx, ClassicyMenu.tsx)SCSS updates across ClassicyWindow.module.scss, appearance.scss, and various UI modules |
| Add new EPG application with schedule grid UI |
|
src/app/Applications/EPG/EPG.tsxsrc/app/Applications/EPG/EPG.module.scsssrc/app/page.tsx |
Full Changelog: v0.4.1...v0.4.2
v0.4.1
Enhance media playback, desktop management, and key UI components across the system by adding subtitles support, new desktop icon sorting actions, refined event handling, and improved styling and input handling.
New Features:
- Enable subtitle parsing and display in QuickTimePlayer with CC toggle and time-friendly display.
- Add “Arrange By Name” and “Arrange By Type” options to desktop context menu for icon sorting.
- Introduce a time format radio selector (12-hour vs. military) in the Date and Time Manager.
Enhancements:
- Centralize QuickTimePlayer open-file state and automate window opening/focusing.
- Refactor desktop icon launching to use event/eventData pattern and remove Suspense wrapper from main desktop.
- Unify input component behaviors: switch RadioInput to onChange, add click support to ControlLabel, and streamline ClassicyDatePicker code formatting.
- Strengthen window manager and app manager typings, expose public methods, and add QuickTimePlayer entry to default state.
Build:
- Add @plussub/srt-vtt-parser dependency and bump eslint-config-prettier.
0.4.0
What's Changed
- 0.4.0 Pre-release image updates by @robbiebyrd in #89
- 0.4.0 Release Candidate by @robbiebyrd in #93
Introduce new applications, refactor state management, enhance file browsing and UI components, and update build configuration and dependencies.
New Features:
- Add Demo app EPG (Electronic Program Guide) application with grid view and navigation controls
- Add Demo QuickTime Player application with playback, seeking, volume, and fullscreen capabilities
- Add Date and Time Manager control panel with date picker, time picker, and timezone settings
- Implement dual-mode file browser views (table and icons) in ClassicyFileBrowser
- Introduce tabbed panels component (ClassicyTabs) for UI sections
- Add ClassicyTimePicker and ClassicyDatePicker input controls for manual time and date entry
Enhancements:
- Consolidate application, window, desktop, and control-panel state into a unified ClassicyStore with event-based reducer handlers
- Migrate AppManager and Appearance contexts under ControlPanels namespace and remove Redux
- Refactor window and desktop components to dispatch events through centralized context APIs
- Standardize SCSS imports and theming mixins under ControlPanels/AppearanceManager
- Upgrade Next.js to v15.1.2 and reorganize package.json scripts (build-audio, build-web, serve)
- Add webpack config to disable minimization for exported build
0.3.1 The Great Renaming (and other stuff)
What's Changed
- Some tweaks and updates to README by @robbiebyrd in #9
- Update to NEXT Config file by @robbiebyrd in #10
- React by @robbiebyrd in #11
- Build tweak by @robbiebyrd in #12
- Image path correction by @robbiebyrd in #13
- More tweaks to build process by @robbiebyrd in #14
- More build tweaks by @robbiebyrd in #15
- Some tweaks to set the basepath properly by @robbiebyrd in #16
- Use a public env var by @robbiebyrd in #17
- Updates to Appearance Manager by @robbiebyrd in #18
- Adding (and fixing) checkbox, radio and button comoponents by @robbiebyrd in #19
- React by @robbiebyrd in #20
- Sound Manager and Desktop Icon updates, general refactors by @robbiebyrd in #21
- React by @robbiebyrd in #22
- yarn.lock add by @robbiebyrd in #23
- Fix for menu by @robbiebyrd in #24
- Build fix for github by @robbiebyrd in #25
- Updates to README by @robbiebyrd in #26
- Updates to appearance manager, modal windows by @robbiebyrd in #27
- Path fix by @robbiebyrd in #28
- Another path fix by @robbiebyrd in #29
- Another path fix by @robbiebyrd in #30
- Tweaks by @robbiebyrd in #31
- React by @robbiebyrd in #32
- Updates by @robbiebyrd in #33
- React by @robbiebyrd in #34
- Disable Appearance Manager debug by @robbiebyrd in #35
- React by @robbiebyrd in #36
- react by @robbiebyrd in #37
- Bug fix for sound location by @robbiebyrd in #38
- Bug fix for previous bug fix by @robbiebyrd in #39
- More tweaks by @robbiebyrd in #40
- Some tweaks by @robbiebyrd in #41
- LINT Fixes by @robbiebyrd in #42
- Some visual tweaks by @robbiebyrd in #43
- React by @robbiebyrd in #44
- React updates by @robbiebyrd in #45
- Fiinder and File System work by @robbiebyrd in #46
- ENV Fix by @robbiebyrd in #47
- Add Finder file browser POC by @robbiebyrd in #48
- A lot of icons and tweaks to Finder (WIP) by @robbiebyrd in #51
- Whoopsie typing by @robbiebyrd in #52
- Bump express from 4.18.3 to 4.19.2 by @dependabot in #50
- Bump webpack-dev-middleware from 6.1.1 to 6.1.2 by @dependabot in #49
- Finder work by @robbiebyrd in #54
- The Great Renaming by @robbiebyrd in #55
- README update by @robbiebyrd in #56
- Workflow Update - Sound Builder by @robbiebyrd in #57
- I mucked up the env file by @robbiebyrd in #58
- Bump next from 14.1.0 to 14.1.1 by @dependabot in #60
- Bump ejs from 3.1.9 to 3.1.10 by @dependabot in #59
- Bump tar from 6.2.0 to 6.2.1 by @dependabot in #53
- UI Tweaks by @robbiebyrd in #61
- Update .env by @robbiebyrd in #63
- Bump next from 14.1.0 to 14.1.1 by @dependabot in #62
- Tweaks by @robbiebyrd in #64
- Deploy fix by @robbiebyrd in #65
- Deployment Tweak by @robbiebyrd in #66
- Fix next config for exporting by @robbiebyrd in #67
- URL tweaks by @robbiebyrd in #68
New Contributors
- @dependabot made their first contribution in #50
Full Changelog: 0.3.0...0.3.1