Skip to content

v0.43.0 - AfterGlow v2 GAS Global Registration (2026-03-25)

What Changed?

This release promotes the AfterGlow v2 singleton logger to the default GAS global namespace. AfterGlow and getLogger in the GAS environment now refer to the v2 implementation. The v1 AfterGlow symbols remain available under V1 suffix for backward compatibility.


What's New

Main Feature: AfterGlow v2 as Default GAS Global

What it does: AfterGlow v2 (src/v2/afterglow) is now the primary logger accessible from GAS scripts. The singleton getLogger() returns the global logger instance, and getCategoryLogger(category) provides category-scoped logging without a named registry.

How to use it:

JavaScript
// Get the singleton logger
const logger = getLogger();
logger.configure({ logLevel: 'debug', logMode: 'eager' });

// Log with category
const authLogger = getCategoryLogger('auth');
authLogger.info('User logged in');

// Export logs to a sheet
const df = logger.toDataFrame();
df.toSheet(SpreadsheetApp.getActiveSheet());

// Reset logs between runs
clearLogs();

Added

  • AfterGlow (v2) registered as GAS global — singleton logger with configure(), toMap(), toDataFrame()
  • getLogger (v2) registered as GAS global — returns the singleton AfterGlow instance
  • clearLogs registered as GAS global — clears all buffered log entries
  • getCategoryLogger registered as GAS global — returns a CategoryLogger facade for a given category

Changed

  • GAS global AfterGlow now refers to v2 (was v1 src/afterglow/)
  • GAS global getLogger now refers to v2 singleton (was v1 registry lookup)
  • v1 AfterGlow symbols renamed to V1 suffix: AfterGlowV1, getLoggerV1, getOrCreateLoggerV1, clearLoggersV1, AshV1, AshRecordsV1
  • pilotlamp suiteAfterGlow migrated to v2 API (getLogger, clearLogs, getCategoryLogger, toDataFrame)
  • pilotlamp suiteTorch and suiteFlameFrame: DataFrameV2 replaced with BareFrame
  • pilotlamp smokeModules: AfterGlow smoke split into v2 and v1 deprecated sections

Fixed

  • suiteFlameFrame: DataFrameV2.fromSheet()BareFrame.fromSheet() (was causing "Unknown error")
  • suiteTorch: DataFrameV2BareFrame across all 9 tests; toString() assertion updated to match BareFrame output
  • suiteAfterGlow: writeDataFrameToSheet(df)df.toSheet(sheet) (v1 API was incompatible with BareFrame)

Is It Safe to Upgrade?

  • Breaking Changes: Yes (GAS global namespace only)
  • Backward Compatible: Yes for TypeScript/Node.js imports; partial for GAS scripts

GAS scripts using AfterGlow or getLogger directly will now use v2 behavior (singleton, no named registry). Migrate v1 usage by adding the V1 suffix: AfterGlowV1, getLoggerV1, getOrCreateLoggerV1.


Release Details

  • Date: 2026-03-25
  • Version: v0.43.0
  • gaslamp: v94
  • pilotlamp: v51
  • Commits:
    • 1feb4980 refactor(index): rename GAS global AfterGlow symbols to v1/v2 suffix convention
    • 6bb6a634 feat(afterglow): export v2 AfterGlow from src/v2/index.ts and register in GAS global namespace
    • e40ba1c7 docs(afterglow): add @deprecated Since 0.43.0 to v1 symbols migrated to src/v2/afterglow
    • 173a2279 test(afterglow): add v2 AfterGlow test suite (39 tests)
    • dd1f49f1 test(pilotlamp): migrate suiteAfterGlow to v2 AfterGlow API
    • bc6daa40 test(pilotlamp): update smokeModules for renamed AfterGlow GAS globals
    • 7bbe88da fix(pilotlamp): replace DataFrameV2 with BareFrame in suiteFlameFrame
    • 5554f95f fix(pilotlamp): use BareFrame.toSheet() instead of writeDataFrameToSheet
    • aca5c4c6 fix(pilotlamp): replace DataFrameV2 with BareFrame in suiteTorch

Known Issues

  • v1 AfterGlow symbols (AfterGlowV1 etc.) are registered in the GAS global namespace but marked @deprecated Since 0.43.0. They will be removed in a future release.

Next Steps

  • Remove v1 AfterGlow (src/afterglow/) in a future release once all GAS scripts are migrated to v2.