Skip to content

Release v1.0.0#26

Merged
boris91 merged 19 commits into
tetherto:mainfrom
arif-dewi:release/17-feb-2026
Feb 17, 2026
Merged

Release v1.0.0#26
boris91 merged 19 commits into
tetherto:mainfrom
arif-dewi:release/17-feb-2026

Conversation

@arif-dewi

@arif-dewi arif-dewi commented Feb 17, 2026

Copy link
Copy Markdown
Contributor

Release v1.0.0

This PR prepares the first major release of MiningOS App UI by merging all features and fixes from the develop branch.

📋 Summary

  • Version: Bumped from 0.0.1 to 1.0.0
  • Conflicts Resolved: 86 merge conflicts resolved (keeping develop branch changes)
  • CHANGELOG: Added comprehensive release notes
  • Build Status: Verified successful build

✨ Key Features Added

  • Operations Dashboard with comprehensive monitoring charts
  • Operations Efficiency reporting (site, miner type, miner unit views)
  • Multi-site Charts: Average Fees, BTC Network Hashprice, Hashprice, Network Hashrate, Power, Production Cost Price, Revenue, Site Energy vs Cost, Site Hash Revenue, Subsidy Fees, Threshold Bar Chart
  • Balance Report with interactive charts and data tables
  • Report Time Frame Selector for flexible date range selection
  • Storybook Stories for multiple components (Card, DoughnutChart, Farm, LineChart, Logs, Miners, Sidebar)

🐛 Major Fixes

🔧 Improvements

📦 Dependencies

  • Updated React to v19.0.0
  • Upgraded Vite to v7.3.1
  • Updated multiple dependencies for security and performance

📝 Release Management

  • CHANGELOG.md: Added with full release notes
  • Tag Request: Please create tag v1.0.0 after merging this PR
  • Build Verification: All builds passing

🔍 Testing

  • Build completed successfully
  • All merge conflicts resolved
  • Package dependencies updated and verified

For detailed release notes, see CHANGELOG.md.


Post-Merge Action Required: Please create the v1.0.0 release tag on the main branch after merging.

eugeneglova and others added 19 commits February 3, 2026 10:47
Co-authored-by: tekwani <tekwani.hemant@gmail.com>
* chore: initial import (tetherto#1)

* chore: remove Storybook configuration and files

Remove all Storybook-related code including story files, data files, and configuration references.

- Delete .storybook directory (main.js, preview.js)
- Remove 7 story files (.stories.tsx)
- Remove 2 story data files (storiesData.tsx, logsCardStoriesData.tsx)
- Clean up ESLint config (remove .storybook/ and stories/ ignores)
- Clean up Vitest config (remove .stories.js/.jsx coverage exclusions)

* chore: fix npm install deprecation warnings

Update dependencies and add overrides to eliminate deprecation warnings during npm install.

- Upgrade jsdom from ^26.0.0 to ^28.0.0 (fixes whatwg-encoding deprecation)
- Add glob override to ^10.0.0 (fixes glob@7.2.3 deprecation)
- Add inflight override to @aashutoshrathi/inflight (fixes inflight memory leak warning)

All deprecation warnings are now resolved.

* chore: add missing qs dependency

Add qs package which is required by src/app/services/api.ts for query string formatting.

---------

Co-authored-by: tekwani <tekwani.hemant@gmail.com>
Co-authored-by: Arif Dewi <arif@dolasoft.co>
Add comprehensive CI workflow with security checks, linting, type checking, testing, and build verification.

Co-authored-by: Arif Dewi <arif@dolasoft.co>
* Merge MOS to MOS

* chore: remove Storybook story files

Re-apply Storybook removal after moria-app-ui sync.

- Remove 7 story files (.stories.tsx)
- Remove 2 story data files (storiesData.tsx, logsCardStoriesData.tsx)

These files were previously removed in b5d0ed7 but came back during
the src sync from moria-app-ui. Removing them again to maintain
the intentional exclusion of Storybook from this repository.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Arif Dewi <arif@dolasoft.co>
Co-authored-by: Cursor <cursoragent@cursor.com>
- Update getRangeTimestamps to properly handle timezone conversions using fromZonedTime
- Add preserveUTC parameter to preserve pre-calculated UTC timestamps
- Fix HistoricalAlerts date picker to use currentValue instead of defaultValue
- Reorder date range handler to update picker dates before calculating timestamps
- Add cleanup logic to prevent stale state updates in useFetchHistoricalLogsPaginatedData
- Update timezone integration tests with fromZonedTime mock
- Add comprehensive test coverage for timezone-aware date range handling

Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix infinite loop in API calls

* Fix dispatching permissions

* Fix formatting

---------

Co-authored-by: Arif Dewi <arif@dolasoft.co>
…ssion loading (tetherto#18)

Wait for permissions to load before redirecting in GateKeeper, and show
loading state in Reports layouts while feature config is being fetched.

Co-authored-by: Arif Dewi <arif@dolasoft.co>
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix TypeScript declaration error in DangerActionButton

Add declare keyword to const export in .d.ts file to properly define ambient declaration for Vite compilation.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix persistent loading state in container widget cards

- MinersActivityChart: Only show loading skeleton when actively fetching data, not when data is empty after load
- ContainerWidgetCard: Set isLoading to false once minerTailLogItem data arrives, preventing infinite loading state

This resolves the issue where container cards showed perpetual loading spinners despite no pending API calls.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix infinite loop in PduGrid and improve permission/feature loading states

- Fix maximum update depth error in PduGrid by wrapping registerSelectablesContainer in useCallback
- Add permission loading check in GateKeeper to prevent premature redirects
- Add feature config loading checks in ReportsLayout components to prevent flickering

Co-authored-by: Cursor <cursoragent@cursor.com>

* Rename JSX files from .js to .jsx extension to fix Vite parse errors

Co-authored-by: Cursor <cursoragent@cursor.com>

* Rename all chart component .js files to .jsx to fix Vite parse errors

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix infinite loop in TimeframeControls by memoizing weeksCache

Co-authored-by: Cursor <cursoragent@cursor.com>

* Improve repair history loading state with animated skeleton

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix unnecessary loading spinners on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Remove loading spinners from Pool Manager dashboard navigation

Co-authored-by: Cursor <cursoragent@cursor.com>

* Skip unnecessary alerts query on Pool Manager dashboard to reduce API calls

Co-authored-by: Cursor <cursoragent@cursor.com>

* Disable polling for alerts query on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Always show Recent Alerts section on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix alerts extraction logic on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Show all recent alerts on Pool Manager dashboard, prioritize pool-related ones

Co-authored-by: Cursor <cursoragent@cursor.com>

* Query critical alerts and extract correct code field on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix Pool Manager alerts by requesting serialNum field and filtering critical alerts

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add console logging to debug Pool Manager alerts

Co-authored-by: Cursor <cursoragent@cursor.com>

* Show all recent alerts on Pool Manager dashboard sorted by date

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix infinite loop in Miner Explorer by memoizing onFiltersChange

Wrap onFiltersChange in useCallback to prevent it from being recreated
on every render, which was causing an infinite loop when used as a
dependency in MinerExplorer's useEffect.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix miners status chart not loading in demo mode

Use fixedDateRange instead of dateRange for miners query to ensure
data is fetched from the correct time range where mock data exists.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix miners status chart not loading on miners report page in demo mode

Add demo mode check to useMinersStatusChartData to use fixed date range
when displaying mock data, similar to the operations dashboard fix.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Refactor: Use centralized isDemoMode utility instead of inline checks

Replace inline environment variable checks with the centralized isDemoMode
function from api.utils for better maintainability.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix demo mode for operations and financial reports

- Use centralized isDemoMode constant instead of inline env checks
- Fix miners status charts on operations dashboard and miners report to use fixed date range in demo mode
- Initialize financial reports with fixed date range in demo mode
- Hide error messages in demo mode for financial reports (EBITDA, Energy Balance, Subsidy/Fee)
- Show clean "No data available" message when mock data is missing

* Fix ESLint parsing errors and remove unused import

- Update eslint.config.cjs to properly parse TypeScript test files
- Add TypeScript parser configuration for test file patterns
- Remove unused _isEmpty import from MinersActivityChart
- Remove react-gauge-chart.d.ts (moved to root project)

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add react-gauge-chart type declaration and exclude .d.ts from ESLint

Co-authored-by: Cursor <cursoragent@cursor.com>

* Remove unused type React import

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Arif Dewi <arif@dolasoft.co>
Co-authored-by: Cursor <cursoragent@cursor.com>
…to#21)

* Fix: energy charts by miner type and mining unit in operations reports

* Fix lint
…t Based on Query (tetherto#24)

* Views - Alets, Current Alerts Critical Load Enhancement Based on Query

* Views - Alets, Current Alerts Critical Code Change
Resolved merge conflicts by keeping develop branch changes.
Bumped version from 0.0.1 to 1.0.0.
Added CHANGELOG.md to track release notes.

This release includes:
- Operations Dashboard and Efficiency reporting
- Multiple bug fixes for alerts, pagination, and infinite loops
- Improved timezone handling
- Enhanced header stats display
- New multi-site charts and reporting tools

Closes the release preparation for v1.0.0.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
- Fixed conflict at line 297 (test file configurations)
- Kept develop branch version with separate JS and TS test configs
- All conflict markers removed

Co-authored-by: Cursor <cursoragent@cursor.com>
@boris91 boris91 merged commit 19090ba into tetherto:main Feb 17, 2026
5 checks passed
Retropex pushed a commit to Retropex/miningos-app-ui that referenced this pull request Apr 1, 2026
* chore: initial import (tetherto#1) (tetherto#3)

Co-authored-by: tekwani <tekwani.hemant@gmail.com>

* Initial MOS commit + fix + dependencies updates (tetherto#2)

* chore: initial import (tetherto#1)

* chore: remove Storybook configuration and files

Remove all Storybook-related code including story files, data files, and configuration references.

- Delete .storybook directory (main.js, preview.js)
- Remove 7 story files (.stories.tsx)
- Remove 2 story data files (storiesData.tsx, logsCardStoriesData.tsx)
- Clean up ESLint config (remove .storybook/ and stories/ ignores)
- Clean up Vitest config (remove .stories.js/.jsx coverage exclusions)

* chore: fix npm install deprecation warnings

Update dependencies and add overrides to eliminate deprecation warnings during npm install.

- Upgrade jsdom from ^26.0.0 to ^28.0.0 (fixes whatwg-encoding deprecation)
- Add glob override to ^10.0.0 (fixes glob@7.2.3 deprecation)
- Add inflight override to @aashutoshrathi/inflight (fixes inflight memory leak warning)

All deprecation warnings are now resolved.

* chore: add missing qs dependency

Add qs package which is required by src/app/services/api.ts for query string formatting.

---------

Co-authored-by: tekwani <tekwani.hemant@gmail.com>
Co-authored-by: Arif Dewi <arif@dolasoft.co>

* chore(ci): add GitHub Actions CI pipeline (tetherto#8)

Add comprehensive CI workflow with security checks, linting, type checking, testing, and build verification.

Co-authored-by: Arif Dewi <arif@dolasoft.co>

* Merge MOS to MOS (tetherto#10)

* Merge MOS to MOS

* chore: remove Storybook story files

Re-apply Storybook removal after moria-app-ui sync.

- Remove 7 story files (.stories.tsx)
- Remove 2 story data files (storiesData.tsx, logsCardStoriesData.tsx)

These files were previously removed in b5d0ed7 but came back during
the src sync from moria-app-ui. Removing them again to maintain
the intentional exclusion of Storybook from this repository.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Arif Dewi <arif@dolasoft.co>
Co-authored-by: Cursor <cursoragent@cursor.com>

* comment modal: fix button wrapping when clicked (tetherto#11)

* Apply timezone handling improvements from fork (tetherto#12)

- Update getRangeTimestamps to properly handle timezone conversions using fromZonedTime
- Add preserveUTC parameter to preserve pre-calculated UTC timestamps
- Fix HistoricalAlerts date picker to use currentValue instead of defaultValue
- Reorder date range handler to update picker dates before calculating timestamps
- Add cleanup logic to prevent stale state updates in useFetchHistoricalLogsPaginatedData
- Update timezone integration tests with fromZonedTime mock
- Add comprehensive test coverage for timezone-aware date range handling

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix: power mode by miner type and mining unit power summary is incorrect in operations reports (tetherto#13)

* Bugfix/infinite loop (tetherto#14)

* Fix infinite loop in API calls

* Fix dispatching permissions

* Fix formatting

---------

Co-authored-by: Arif Dewi <arif@dolasoft.co>

* Header Stats, Provide Miners Total Amount (tetherto#17)

* Fix page reload issues by preventing premature redirects during permission loading (tetherto#18)

Wait for permissions to load before redirecting in GateKeeper, and show
loading state in Reports layouts while feature config is being fetched.

Co-authored-by: Arif Dewi <arif@dolasoft.co>
Co-authored-by: Cursor <cursoragent@cursor.com>

* Bugfix/loops (tetherto#20)

* Fix TypeScript declaration error in DangerActionButton

Add declare keyword to const export in .d.ts file to properly define ambient declaration for Vite compilation.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix persistent loading state in container widget cards

- MinersActivityChart: Only show loading skeleton when actively fetching data, not when data is empty after load
- ContainerWidgetCard: Set isLoading to false once minerTailLogItem data arrives, preventing infinite loading state

This resolves the issue where container cards showed perpetual loading spinners despite no pending API calls.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix infinite loop in PduGrid and improve permission/feature loading states

- Fix maximum update depth error in PduGrid by wrapping registerSelectablesContainer in useCallback
- Add permission loading check in GateKeeper to prevent premature redirects
- Add feature config loading checks in ReportsLayout components to prevent flickering

Co-authored-by: Cursor <cursoragent@cursor.com>

* Rename JSX files from .js to .jsx extension to fix Vite parse errors

Co-authored-by: Cursor <cursoragent@cursor.com>

* Rename all chart component .js files to .jsx to fix Vite parse errors

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix infinite loop in TimeframeControls by memoizing weeksCache

Co-authored-by: Cursor <cursoragent@cursor.com>

* Improve repair history loading state with animated skeleton

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix unnecessary loading spinners on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Remove loading spinners from Pool Manager dashboard navigation

Co-authored-by: Cursor <cursoragent@cursor.com>

* Skip unnecessary alerts query on Pool Manager dashboard to reduce API calls

Co-authored-by: Cursor <cursoragent@cursor.com>

* Disable polling for alerts query on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Always show Recent Alerts section on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix alerts extraction logic on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Show all recent alerts on Pool Manager dashboard, prioritize pool-related ones

Co-authored-by: Cursor <cursoragent@cursor.com>

* Query critical alerts and extract correct code field on Pool Manager dashboard

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix Pool Manager alerts by requesting serialNum field and filtering critical alerts

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add console logging to debug Pool Manager alerts

Co-authored-by: Cursor <cursoragent@cursor.com>

* Show all recent alerts on Pool Manager dashboard sorted by date

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix infinite loop in Miner Explorer by memoizing onFiltersChange

Wrap onFiltersChange in useCallback to prevent it from being recreated
on every render, which was causing an infinite loop when used as a
dependency in MinerExplorer's useEffect.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix miners status chart not loading in demo mode

Use fixedDateRange instead of dateRange for miners query to ensure
data is fetched from the correct time range where mock data exists.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix miners status chart not loading on miners report page in demo mode

Add demo mode check to useMinersStatusChartData to use fixed date range
when displaying mock data, similar to the operations dashboard fix.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Refactor: Use centralized isDemoMode utility instead of inline checks

Replace inline environment variable checks with the centralized isDemoMode
function from api.utils for better maintainability.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix demo mode for operations and financial reports

- Use centralized isDemoMode constant instead of inline env checks
- Fix miners status charts on operations dashboard and miners report to use fixed date range in demo mode
- Initialize financial reports with fixed date range in demo mode
- Hide error messages in demo mode for financial reports (EBITDA, Energy Balance, Subsidy/Fee)
- Show clean "No data available" message when mock data is missing

* Fix ESLint parsing errors and remove unused import

- Update eslint.config.cjs to properly parse TypeScript test files
- Add TypeScript parser configuration for test file patterns
- Remove unused _isEmpty import from MinersActivityChart
- Remove react-gauge-chart.d.ts (moved to root project)

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add react-gauge-chart type declaration and exclude .d.ts from ESLint

Co-authored-by: Cursor <cursoragent@cursor.com>

* Remove unused type React import

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Arif Dewi <arif@dolasoft.co>
Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix - Resolve operations energy report miner type unit charts (tetherto#21)

* Fix: energy charts by miner type and mining unit in operations reports

* Fix lint

* fix: get list things paginated hook doesn't run on query change (tetherto#23)

* (improvement) Views - Alerts, Current Alerts Critical Load Enhancement Based on Query (tetherto#24)

* Views - Alets, Current Alerts Critical Load Enhancement Based on Query

* Views - Alets, Current Alerts Critical Code Change

* docs: update CHANGELOG link to upstream repository

Co-authored-by: Cursor <cursoragent@cursor.com>

* Cleanup

* fix: resolve remaining merge conflict in eslint.config.cjs

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: resolve all remaining merge conflicts in eslint.config.cjs

- Fixed conflict at line 297 (test file configurations)
- Kept develop branch version with separate JS and TS test configs
- All conflict markers removed

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Eugene Glova <eugene.glova@gmail.com>
Co-authored-by: tekwani <tekwani.hemant@gmail.com>
Co-authored-by: Arif Dewi <arif@dolasoft.co>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Shrutesh Pachineela <sruteshp@gmail.com>
Co-authored-by: Roberto Di Lillo <dilillo.roberto@gmail.com>
Co-authored-by: Parag More <34959548+paragmore@users.noreply.github.com>
Co-authored-by: habrahamyanbf <145970023+habrahamyanbf@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants