Skip to content

Roadmap

This document outlines the Forge SDK development roadmap, including planned extension modules, features, and improvements to bring Forge to feature parity with Electron and Tauri.

Current State

Forge currently has 40+ implemented extension modules (as of v1.0.0p-steel-donut 🍩):

Core Extensions (Fully Implemented)

ModuleCrateOperationsStatus
runtime:fsext_fs11Complete
runtime:windowext_window37Complete
runtime:ipcext_ipc2Complete
runtime:netext_net7Complete
runtime:processext_process7Complete
runtime:sysext_sys11Complete
runtime:wasmext_wasm10Complete
runtime:cryptoext_crypto10Complete
runtime:storageext_storage10Complete
runtime:appext_app16Complete
runtime:shellext_shell7Complete

Support Extensions (Implemented)

ModuleCrateOperationsStatus
runtime:logext_log2Complete
runtime:traceext_trace5Complete
runtime:timersext_timers6Complete
runtime:lockext_lock4Complete
runtime:signalsext_signals4Complete
runtime:pathext_path5Complete
runtime:webviewext_webview8Complete
runtime:devtoolsext_devtools3Complete
runtime:os_compatext_os_compat2Complete

New Extensions (Steel Donut Release)

ModuleCratePurposeStatus
runtime:bundlerext_bundlerApp bundling operationsComplete
runtime:codesignext_codesignCode signing (macOS/Windows/Linux)Complete
runtime:dockext_dockmacOS dock integrationComplete
runtime:encodingext_encodingText encoding/decodingComplete
runtime:etcherext_etcherDocumentation generationComplete
runtime:image_toolsext_image_toolsImage conversion (PNG, SVG, WebP, ICO)Complete
runtime:svelteext_svelteSvelteKit integrationComplete
runtime:web_inspectorext_web_inspectorChrome DevTools Protocol bridgeComplete
runtime:weldext_weldRuntime binding system accessComplete
runtime:databaseext_databaseDatabase operationsComplete
runtime:debuggerext_debuggerDebugger integrationComplete
runtime:monitorext_monitorSystem monitoringComplete
runtime:displayext_displayDisplay informationComplete
runtime:updaterext_updaterApp update systemComplete
runtime:protocolext_protocolCustom protocol handlersComplete
runtime:shortcutsext_shortcutsKeyboard shortcutsComplete

Completed Modules (Previously Phase 1)

The following high-priority modules have been fully implemented:

runtime:crypto - Cryptography & Security ✅

Cryptographic operations for secure applications.

OperationDescriptionStatus
randomBytesCryptographically secure random bytes
randomUUIDGenerate UUID v4
hashHash data (SHA-256, SHA-384, SHA-512)
hashHexHash returning hex string
hmacHMAC signature
encryptSymmetric encryption (AES-256-GCM)
decryptSymmetric decryption
generateKeyGenerate encryption key
deriveKeyDerive key from password (PBKDF2)
verifyVerify HMAC signature

Error codes: 8000-8009


runtime:storage - Persistent Key-Value Storage ✅

App state persistence with SQLite-backed storage.

OperationDescriptionStatus
getGet value by key
setSet value by key
deleteDelete key
hasCheck if key exists
keysList all keys
clearClear all data
sizeGet storage size in bytes
getManyBatch get
setManyBatch set
deleteManyBatch delete

Storage location: ~/.forge/<app-identifier>/storage.db Error codes: 8100-8109 Capability: [capabilities.storage]


runtime:shell - Shell & OS Integration ✅

Common desktop app integrations for opening files, URLs, and system interactions.

OperationDescriptionStatus
openExternalOpen URL in default browser
openPathOpen file/folder with default app
showItemInFolderReveal file in file manager
moveToTrashMove file to recycle bin/trash
beepSystem beep sound
getFileIconGet file type icon⚠️ Partial
getDefaultAppGet default app for file type

Error codes: 8200-8209 Capability: [capabilities.shell]


runtime:app - Application Lifecycle ✅

Core application management and lifecycle control.

OperationDescriptionStatus
quitQuit application
exitForce exit (no cleanup)
relaunchRestart application
getVersionGet app version
getNameGet app name
getIdentifierGet app identifier
getPathGet special path
isPackagedCheck if running packaged
getLocaleGet system locale
setAppUserModelIdSet Windows taskbar ID
requestSingleInstanceLockEnsure single instance
releaseSingleInstanceLockRelease instance lock
focusBring app to foreground
hideHide all app windows
showShow all app windows
setBadgeCountSet dock/taskbar badge

Path names: home, appData, documents, downloads, desktop, music, pictures, videos, temp, exe, resources, logs, cache

Error codes: 8300-8319


Phase 1: High Priority Modules (In Progress)

runtime:screen - Display Information

Multi-monitor support and display information. Currently a stub extension (ext_display).

OperationDescriptionSignature
getPrimaryDisplayGet primary monitor() => Display
getAllDisplaysGet all monitors() => Display[]
getDisplayMatchingGet display containing rect(rect: Rect) => Display
getDisplayNearestPointGet display nearest to point(point: Point) => Display
getCursorScreenPointGet cursor position() => Point
screenEventsDisplay change events() => AsyncGenerator<ScreenEvent>
interface Display {
id: number;
label: string;
bounds: Rect;
workArea: Rect;
scaleFactor: number;
rotation: 0 | 90 | 180 | 270;
isPrimary: boolean;
}

Error codes: 8400-8409


runtime:globalShortcut - Global Keyboard Shortcuts

System-wide keyboard shortcut registration. Currently a stub extension (ext_shortcuts).

OperationDescriptionSignature
registerRegister global hotkey(accelerator: string, callback: () => void) => boolean
unregisterUnregister hotkey(accelerator: string) => void
unregisterAllUnregister all hotkeys() => void
isRegisteredCheck if registered(accelerator: string) => boolean
shortcutEventsHotkey trigger events() => AsyncGenerator<ShortcutEvent>

Accelerator format: "CommandOrControl+Shift+Z", "Alt+Space", etc.

Error codes: 8500-8509 Capability: [capabilities.globalShortcut]


runtime:autoUpdater - Application Updates

Automatic application update system. Currently a stub extension (ext_updater).

OperationDescriptionSignature
checkForUpdatesCheck for new version() => Promise<UpdateInfo | null>
downloadUpdateDownload available update() => Promise<void>
quitAndInstallApply update and restart() => void
setFeedURLSet update server URL(url: string) => void
getFeedURLGet current update URL() => string
updateEventsUpdate progress events() => AsyncGenerator<UpdateEvent>
interface UpdateInfo {
version: string;
releaseDate: string;
releaseNotes?: string;
mandatory?: boolean;
}
type UpdateEvent =
| { type: 'checking' }
| { type: 'available'; info: UpdateInfo }
| { type: 'not-available' }
| { type: 'downloading'; progress: number }
| { type: 'downloaded' }
| { type: 'error'; message: string };

Error codes: 8600-8609


runtime:database - Embedded SQLite Database

Full SQLite database support for complex data storage. Currently a stub extension.

OperationDescriptionSignature
openOpen/create database(name: string, options?: DbOptions) => Promise<Database>
closeClose database(db: Database) => Promise<void>
executeExecute SQL (no return)(db: Database, sql: string, params?: unknown[]) => Promise<number>
queryQuery with results<T>(db: Database, sql: string, params?: unknown[]) => Promise<T[]>
queryOneQuery single row<T>(db: Database, sql: string, params?: unknown[]) => Promise<T | null>
batchExecute multiple statements(db: Database, statements: string[]) => Promise<void>
transactionRun in transaction<T>(db: Database, fn: () => Promise<T>) => Promise<T>
preparePrepare statement(db: Database, sql: string) => PreparedStatement

Database location: ~/.forge/<app-identifier>/databases/<name>.db

Error codes: 9000-9019 Capability: [capabilities.database]


Phase 2: Medium Priority Modules

runtime:theme - Native Theme Detection

System theme detection and preference management.

OperationDescriptionSignature
shouldUseDarkColorsCheck if dark mode active() => boolean
getThemeSourceGet theme setting() => 'system' | 'light' | 'dark'
setThemeSourceSet theme preference(source: 'system' | 'light' | 'dark') => void
getAccentColorGet system accent color() => string
getHighContrastCheck high contrast mode() => boolean
themeEventsTheme change events() => AsyncGenerator<ThemeEvent>

Error codes: 8700-8709


runtime:protocol - Custom Protocol Handlers

Deep linking and custom URL scheme support. Currently a stub extension.

OperationDescriptionSignature
registerSchemeRegister URL scheme(scheme: string) => Promise<boolean>
unregisterSchemeUnregister scheme(scheme: string) => Promise<void>
isSchemeRegisteredCheck registration(scheme: string) => boolean
setAsDefaultProtocolClientSet as OS default(scheme: string) => Promise<boolean>
removeAsDefaultProtocolClientRemove as default(scheme: string) => Promise<boolean>
isDefaultProtocolClientCheck if default(scheme: string) => boolean
protocolEventsIncoming URL events() => AsyncGenerator<ProtocolEvent>

Error codes: 9100-9109


Phase 3: Low Priority Modules

runtime:dock - macOS Dock Integration

macOS-specific dock customization.

OperationDescriptionSignature
bounceBounce dock icon(type?: 'critical' | 'informational') => number
cancelBounceStop bounce(id: number) => void
setBadgeSet badge text(text: string) => void
getBadgeGet badge text() => string
hideHide dock icon() => void
showShow dock icon() => void
isVisibleCheck dock visibility() => boolean
setIconSet custom dock icon(image: Uint8Array | null) => void
setMenuSet dock menu(menu: MenuItem[]) => void

Platform: macOS only (no-op on other platforms) Error codes: 8800-8809


runtime:taskbar - Windows Taskbar Integration

Windows-specific taskbar customization.

OperationDescriptionSignature
setProgressBarSet progress indicator(progress: number, options?: ProgressOptions) => void
setOverlayIconSet overlay icon(icon: Uint8Array | null, description?: string) => void
setThumbarButtonsSet thumbnail toolbar(buttons: ThumbarButton[]) => void
setJumpListSet jump list(categories: JumpListCategory[]) => void
flashFrameFlash taskbar button(flash: boolean) => void

Platform: Windows only (no-op on other platforms) Error codes: 8900-8909


runtime:session - WebView Session Management

WebView session and cookie management.

OperationDescriptionSignature
getCookiesGet cookies for URL(url: string) => Promise<Cookie[]>
setCookieSet cookie(cookie: Cookie) => Promise<void>
removeCookiesRemove cookies(url: string, name?: string) => Promise<void>
clearStorageDataClear browsing data(options?: ClearStorageOptions) => Promise<void>
setProxySet proxy config(config: ProxyConfig) => Promise<void>
resolveProxyResolve proxy for URL(url: string) => Promise<string>
setUserAgentSet user agent(userAgent: string) => void
getUserAgentGet user agent() => string

Error codes: 9200-9209


runtime:download - Download Manager

File download tracking and management.

OperationDescriptionSignature
startStart download(url: string, options?: DownloadOptions) => Promise<Download>
pausePause download(downloadId: string) => Promise<void>
resumeResume download(downloadId: string) => Promise<void>
cancelCancel download(downloadId: string) => Promise<void>
getStateGet download state(downloadId: string) => DownloadState
downloadEventsDownload progress events() => AsyncGenerator<DownloadEvent>

Error codes: 9300-9309


Phase 4: Features & Processes

Hot Reload System

Live reload for development workflow.

Components:

  • File watcher for src/ and web/ directories
  • WebSocket server for reload signals
  • Deno module cache invalidation
  • HMR protocol for web assets

Single Instance Lock ✅

Prevent multiple app instances. Implemented in ext_app.

Components:

  • Lock file-based detection ✅
  • IPC to existing instance (partial)
  • Focus existing window on duplicate launch ✅

Error Code Standardization ✅

Consistent error codes across all modules. Implemented across all new extensions.

All new extensions use standardized error code ranges:

  • ext_crypto: 8000-8009
  • ext_storage: 8100-8109
  • ext_shell: 8200-8209
  • ext_app: 8300-8319

Deep Linking

OS-level URL scheme handling.

Components:

  • Integrate with runtime:protocol
  • Startup argument parsing for URLs
  • Event dispatch to running app

Accessibility APIs

Screen reader and accessibility support.

Components:

  • Screen reader announcements
  • Accessibility tree access
  • High contrast detection

Internationalization Support

Locale and RTL support.

Components:

  • Locale detection ✅ (in ext_app)
  • RTL support hints
  • Number/date formatting

Summary

CategoryCount
Implemented extension modules22
Stub extension modules (need implementation)5
Implemented operations~150+
Planned operations (stubs)~32
Features completed3
Features in progress4

Implementation Status

Completed:

  1. ext_crypto (10 ops) ✅
  2. ext_storage (10 ops) ✅
  3. ext_shell (7 ops) ✅
  4. ext_app (16 ops) ✅
  5. ext_log (2 ops) ✅
  6. ext_trace (5 ops) ✅
  7. ext_timers (6 ops) ✅
  8. ext_lock (4 ops) ✅
  9. ext_signals (4 ops) ✅
  10. ext_path (5 ops) ✅
  11. ext_webview (8 ops) ✅
  12. ext_devtools (3 ops) ✅
  13. ext_os_compat (2 ops) ✅
  14. ext_bundler (build tooling) ✅
  15. ext_weld (TypeScript generation) ✅

Phase 1 - High Priority (Stub → Full Implementation):

  1. ext_display (screen) - 6 ops planned
  2. ext_shortcuts (globalShortcut) - 5 ops planned
  3. ext_updater (autoUpdater) - 6 ops planned
  4. ext_database - 8 ops planned

Phase 2 - Medium Priority (New Modules): 5. ext_theme - 6 ops planned 6. ext_protocol - 7 ops planned (stub exists)

Phase 3 - Low Priority (Platform-Specific): 7. ext_dock (macOS) - 9 ops planned 8. ext_taskbar (Windows) - 5 ops planned 9. ext_session - 8 ops planned 10. ext_download - 6 ops planned

Phase 4 - Features:

  • Hot reload system
  • Deep linking
  • Accessibility APIs
  • Internationalization support