Releases: intelQong/NotionFlow
Releases · intelQong/NotionFlow
Release list
NotionFlow v1.4.0 - Simplified Pure Desktop Mode for iOS & iPadOS
NotionFlow v1.4.0: Simplified Pure Desktop Mode
🎯 What Changed
- Zero Bloat & Streamlined Architecture: Removed intrusive floating action bars, bottom keyboard toolbars, forced column carousels, and DOM-mutating touch handles that cluttered the viewport and fought with Notion's native React engine.
- 4x Lighter: Script bundle reduced from 73KB to 17KB.
- Bulletproof Desktop Spoofing:
- Overrides User-Agent and platform to Desktop macOS Safari.
- Strips prototype touch event properties (
ontouchend) to defeat Notion's iPad detection check ("MacIntel" === platform && "ontouchend" in document). - Intercepts and locks
window.CONFIG.isMobile = falseandwindow.__mobileAppFeatures = {}. - Strips `meta[name="apple-itunes-app"]\Smart App Banner automatically via MutationObserver.
- Native Responsive Usability:
- Off-canvas slide-over drawer for desktop sidebar on narrow screens (< 768px).
- Responsive constraints for desktop dialogs (Settings & Members, Quick Find, Share) so they fit comfortably on mobile viewports.
- Smooth
-webkit-overflow-scrolling: touchmomentum scrolling for database tables, boards, and timelines.
- Verified on Playwright WebKit: Tested across emulated iPhone 14 Pro and iPad Pro 11.
NotionFlow v1.3.4 - Smart Banner & Mobile Feature Flags Neutralizer
NotionFlow v1.3.4 Release Notes
- Neutralize `meta[name="apple-itunes-app"]\Smart App Banner with immediate execution and MutationObserver.
- Freeze
window.__mobileAppFeaturesto prevent Notion's mobile feature flags from triggering mobile home routing (supportsNativeHome). - Ensure userscript is ready for direct installation in Safari Userscripts extension.
NotionFlow v1.3.3 - Safari Page Context & Desktop Settings Fix
NotionFlow v1.3.3 Release Notes
🎯 Key Fixes & Architecture Improvements
-
Restored
@grant nonefor Direct Page Execution- Root Cause: Specifying
@grant GM_xmlhttpRequestforced Safari Userscripts extension (and Tampermonkey) to isolate the script inside anISOLATEDcontent-script world. In that isolated world, overrides onwindow.CONFIG,navigator.userAgent, andScreen.prototypenever reached the page'sMAINJavaScript context where Notion's client bundle ran, causing Notion to boot as standard mobile. - Fix: Reverted
@granttononeso the userscript runs uninhibited in the page context. Update checks now leverage nativefetch()with clean error silencing under restrictive page CSP.
- Root Cause: Specifying
-
Strict Desktop Sidebar Targeting for Settings & Notifications
- Root Cause:
findNotionSettingsButton()previously searched document-wide for[aria-label*="Settings"]. Mobile Notion renders a bottom navigation bar with that exact label; clicking it invoked Notion's mobile drawer store (r(86231).O.setState({ open: true })). - Fix: Restricted queries strictly to desktop sidebar containers (
.notion-sidebar-container, .notion-sidebar).
- Root Cause:
-
Native Notion SPA Router Integration (
?openSettingsTab)- By analyzing Notion's client bundle router (
806127), we mapped theopenSettingsTabparameter directly to Notion's desktop space settings store (r(802724).Ay). - NotionFlow now dispatches
?openSettingsTab=accountand?openSettingsTab=notificationsvia history state to reliably invoke Notion's desktop settings modals regardless of sidebar state.
- By analyzing Notion's client bundle router (
-
Preserved Desktop Modal Layout
- Removed destructive CSS (
[role="dialog"] > div { flex-direction: column !important; }) that was squashing Notion's two-column desktop modal into an unreadable vertical mobile layout.
- Removed destructive CSS (
📦 Distribution Assets
notion-flow.user.js: Standard userscript for Safari Userscripts extension, Stay, Orion, Tampermonkey.notionflow-injection.js: Standalone bundle for native iOS WKWebView / WKUserScript wrappers.
NotionFlow v1.3.2 - Live WebKit Compatibility & Boot Crash Fix
What's New in v1.3.2 🚀
- Critical Boot Crash Fix: Fixed live startup crash on
app.notion.comcaused byCONFIG_OVERRIDEclobbering Notion's internal configuration bundle. Safely hookswindow.CONFIG.isMobilevia dynamic property descriptors so React initializes cleanly with 0 errors. - Trusted Types & CSP Compliance: Added
safeSetHTMLutility with Trusted Types policy integration and DOMParser fallback, eliminatingrequire-trusted-types-for 'script'CSP violations. - Frame Isolation (
@noframes): Userscript now strictly restricts execution towindow.top, preventing script injection into third-party authentication and embed iframes (Google One Tap, Stripe, Apple Sign-in). - Cross-Origin Auto-Update: Added
GM_xmlhttpRequestandGM.xmlHttpRequestsupport toUpdateCheckerto cleanly bypass pageconnect-srcCSP restrictions in Safari Userscripts and userscript managers. - Verified in Playwright WebKit: Thoroughly tested in headless WebKit using an iPhone 14 Pro emulation profile against live
https://app.notion.comandhttps://www.notion.sowith zero errors.
NotionFlow v1.3.1 - Full Desktop Route & Settings Fix
🚀 What's New in v1.3.1
🎯 Defeated Notion's Internal iPad Detector (Root-Cause Fix)
- Neutralized
"ontouchend" in documentcheck: Reverse-engineering Notion's production JavaScript chunks (module 900532) revealed that whennavigator.platformis spoofed to"MacIntel", Notion inspects"ontouchend" in window.documentto detect iPadOS. On iOS Safari/PWA, this evaluated totrue, causing Notion's detector to returnisIpad: true, cascading toisMobile: trueand serving mobile routes for Settings and Notifications. - Stripped
ontouch*listener properties fromDocument.prototype,HTMLDocument.prototype, anddocumentso Notion's detector evaluates:isIpad: falseisIOS: falseisMobile: falseisDesktop: true
🛡️ Locked window.CONFIG.isMobile Desktop Property Descriptor
- Intercepted Notion's core configuration module (
module 386961) using an accessor descriptor lock to guaranteewindow.CONFIG.isMobileis permanently forced tofalse.
⚡ WebKit EventTarget & MutationObserver Stability
- Replaced
Proxywrappers onwindow.matchMediawith directObject.definePropertyoverrides, preventing WebKitTypeError: Can only call EventTarget.addEventListener on instances of EventTarget. - Debounced all DOM
MutationObserverlisteners usingrequestAnimationFrameto prevent microtask loops in WebKit. - Added
safeAppend&safeAppendBodyutilities to guarantee flawless execution atdocument-start.
🧪 Verified with Playwright WebKit
- Verified inside Playwright WebKit on emulated iPhone 14 Pro:
- Notion Detector:
{ isIpad: false, isIOS: false, isMobile: false, isDesktop: true } - window.CONFIG.isMobile:
false - Floating Action Bar & Settings trigger: Mounted cleanly with 0 console errors.
- Notion Detector:
NotionFlow v1.3.0
🚀 What's New in NotionFlow v1.3.0
- Comprehensive Desktop Environment Masking: Fully overrides
navigator.userAgent,navigator.appVersion,navigator.platform,navigator.maxTouchPoints(set to 0 to bypass iPad heuristics), and suppressesnavigator.standalonePWA flags. - Screen Dimension Spoofing: Overrides
screen.width,screen.availWidth,outerWidth, andouterHeightto 1440x900 to ensure Notion never triggers mobile routing. - Desktop Settings & Members Modal: Notion now serves the full desktop Settings dialog instead of simplified mobile subpages. Includes responsive styling with horizontal scrolling tab navigation on mobile screens.
- Desktop Notifications & Inbox Overlay: Fixed notifications opening in desktop overlay popover with mobile-adapted width and touch scrolling.
- Floating Action Bar Updates: Added direct Notifications & Inbox trigger in the FAB popover and refined Cmd+, / Ctrl+, shortcut dispatching.
- Pointer & Display-Mode Media Query Proxying: Ensures matchMedia reports desktop pointer (
fine,hover) and suppresses mobile standalone checks.
NotionFlow v1.2.0
🚀 What's New in NotionFlow v1.2.0
-
🔄 Automatic In-App & Extension Updates:
- Embedded standard
@updateURLand@downloadURLmetadata directives for automatic background updates in Safari Userscripts, Stay, Orion, and Tampermonkey. - Added smart background update notification banner + manual "Check for update" button inside the FAB preferences panel.
- Embedded standard
-
🌐 Primary Web App Domain Support (
app.notion.com):- Added explicit matching for
https://app.notion.com/*(Notion's primary web app URL). - Seamless coverage across
app.notion.com,notion.com,app.notion.so,notion.so, and*.notion.site. - Intercepts and suppresses mobile app store redirect banners on
notion.com/mobile.
- Added explicit matching for
-
⚙️ 1-Tap Access to Notion Full Settings & Members:
- Direct access to Notion's full desktop Settings & Members dialog (Workspace identity, Members, Billing, Plans, Connections, Security, Export) directly via the ⚙️ FAB button or
Cmd+,. - Dynamically converts desktop settings navigation into a swipeable horizontal category tab bar on mobile screens.
- Direct access to Notion's full desktop Settings & Members dialog (Workspace identity, Members, Billing, Plans, Connections, Security, Export) directly via the ⚙️ FAB button or
-
📲 Dedicated iOS Home Screen Guide (Edge-to-Edge Standalone):
- Complete instructions to save Notion to your iPhone/iPad Home Screen.
- Hides Safari's top URL bar and bottom controls for a 100% full-screen native desktop experience.
-
⚡ Pure Lightweight Userscript:
- Zero app wrapper bloat or cloud CI requirements—compiles in milliseconds and runs instantly in Safari via the free Userscripts extension.
NotionFlow v1.1.0
What's New in v1.1.0:
- ⚙️ Notion Full Settings & Members Access: 1-tap direct access to Notion's full desktop Settings & Members dialog (Workspace, Billing, Members, Public Sites, Connections, Security, Export) directly via the ⚙️ FAB button or
Cmd+,. - 📱 Responsive Mobile Settings Dialog: Dynamically converts desktop settings navigation into a swipeable horizontal category tab bar on mobile viewports.
- ⚡ Pure Userscript Focus: Dropped native app wrapper complexity for a lightweight, zero-overhead iOS Safari userscript.
📲 How to Install & Add to iPhone/iPad Home Screen (60 Seconds):
- Install the free Userscripts extension from the App Store.
- In iOS Settings ➔ Safari ➔ Extensions ➔ Userscripts, toggle ON and set permissions to Allow.
- Download
notion-flow.user.jsinto your Userscripts directory in the Files app. - Open
https://www.notion.comin Safari. - Tap the Safari Share icon (⬆️) ➔ tap Add to Home Screen ➔ name it NotionFlow and tap Add.
- Launch it from your Home Screen for a distraction-free, 100% full-screen native desktop experience!
NotionFlow v1.0.0
Initial release of NotionFlow Userscript for iOS Safari