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 withconfigure(),toMap(),toDataFrame()getLogger(v2) registered as GAS global — returns the singletonAfterGlowinstanceclearLogsregistered as GAS global — clears all buffered log entriesgetCategoryLoggerregistered as GAS global — returns aCategoryLoggerfacade for a given category
Changed¶
- GAS global
AfterGlownow refers to v2 (was v1src/afterglow/) - GAS global
getLoggernow refers to v2 singleton (was v1 registry lookup) - v1 AfterGlow symbols renamed to
V1suffix:AfterGlowV1,getLoggerV1,getOrCreateLoggerV1,clearLoggersV1,AshV1,AshRecordsV1 - pilotlamp
suiteAfterGlowmigrated to v2 API (getLogger,clearLogs,getCategoryLogger,toDataFrame) - pilotlamp
suiteTorchandsuiteFlameFrame:DataFrameV2replaced withBareFrame - pilotlamp
smokeModules: AfterGlow smoke split into v2 and v1 deprecated sections
Fixed¶
suiteFlameFrame:DataFrameV2.fromSheet()→BareFrame.fromSheet()(was causing "Unknown error")suiteTorch:DataFrameV2→BareFrameacross all 9 tests;toString()assertion updated to matchBareFrameoutputsuiteAfterGlow:writeDataFrameToSheet(df)→df.toSheet(sheet)(v1 API was incompatible withBareFrame)
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 (
AfterGlowV1etc.) 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.