diff --git a/src/backend/src/CoreModule.js b/src/backend/src/CoreModule.js index acc24e781..abd751e46 100644 --- a/src/backend/src/CoreModule.js +++ b/src/backend/src/CoreModule.js @@ -288,9 +288,6 @@ const install = async ({ context, services, app, useapi, modapi }) => { const { DetailProviderService } = require('./services/DetailProviderService'); services.registerService('whoami', DetailProviderService); - const { DevTODService } = require('./services/DevTODService'); - services.registerService('__dev-tod', DevTODService); - const { DriverService } = require('./services/drivers/DriverService'); services.registerService('driver', DriverService); diff --git a/src/backend/src/services/DevTODService.js b/src/backend/src/services/DevTODService.js deleted file mode 100644 index 4fc9768fc..000000000 --- a/src/backend/src/services/DevTODService.js +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2024-present Puter Technologies Inc. - * - * This file is part of Puter. - * - * Puter is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -const putility = require('@heyputer/putility'); -const BaseService = require('./BaseService'); -const config = require('../config'); - -const tips = ( - // CLI tips - ` - Type \`help\` to see a list of commands - \`logs:show\` toggles log output; useful when typing long commands - \`logs:indent \` toggles indentation for some logs - \`lock:locks \` will list any active mutex locks - `, - // Source code tips - ` - Most services are registered in CoreModule.js - Boot sequence events are different from service events - ExpectationService exists to ensure Puter doesn't miss a step - Services are composable; StrategyService is a good example - API endpoints should be on a separate origin in production - These messages come from DevTODService.js - `) - .split('\n') - .map((line) => line.trim()) - .filter((line) => line.length) - ; - -/** -* @class DevTODService -* @extends BaseService -* @description Service that manages the "Tip of the Day" functionality in the development console. -* Displays random helpful tips about the system during startup and provides commands to manage -* the tip display. Inherits from BaseService and integrates with the dev-console and commands -* services to provide an interactive tip system for developers. -*/ -class DevTODService extends BaseService { - /** - * Initializes the DevTODService by registering commands with the command service - * @private - * @async - * @returns {Promise} - */ - async _init () { - const svc_commands = this.services.get('commands'); - this._register_commands(svc_commands); - } - - /** - * Handles the boot consolidation phase for the Tip of the Day service - * Selects a random tip, wraps it to fit the console width, and creates - * a widget function to display the formatted tip with optional header/footer - * - * @returns {Promise} - */ - async ['__on_boot.consolidation'] () { - if ( ! config.tipofday ) return; - const random_tip = tips[Math.floor(Math.random() * tips.length)]; - const svc_devConsole = this.services.get('dev-console', { optional: true }); - if ( ! svc_devConsole ) return; - - // Keep a widget so it can be dismissed, but render with simple lines. - this.tod_widget = () => { - const lines = putility.libs.string.wrap_text(random_tip); - if ( ! this.global_config.minimal_console ) { - lines.unshift('\x1B[1mTip of the Day\x1B[0m'); - lines.push('Type tod:dismiss to un-stick this message'); - } - return lines; - }; - - this.tod_widget.unimportant = true; - svc_devConsole.add_widget(this.tod_widget); - } - - _register_commands (commands) { - commands.registerCommands('tod', [ - { - id: 'dismiss', - description: 'Dismiss the startup message', - handler: async (_, log) => { - if ( ! this.tod_widget ) { - log.log('No Tip of the Day message to dismiss.'); - return; - } - const svc_devConsole = this.services.get('dev-console', { optional: true }); - if ( svc_devConsole ) { - svc_devConsole.remove_widget(this.tod_widget); - } - const lines = this.tod_widget(); - for ( const line of lines ) log.log(line); - this.tod_widget = null; - }, - }, - ]); - } -} - -module.exports = { DevTODService };