{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":750973423,"defaultBranch":"main","name":"cmdtab","ownerLogin":"stianhoiland","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-01-31T17:29:08.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2081712?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1713820093.0","currentOid":""},"activityList":{"items":[{"before":"07e83a031db902f05bafcba1b3b0e8305cd3d2e2","after":"746c41226cdd820c26eadf00eb86b45896dc1dcd","ref":"refs/heads/main","pushedAt":"2024-04-22T21:08:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"A little maintenance\n\n- fix skipping first app windows when alt+`-ing from alt+tab\n- rename gui config members\n- remove and update many comments\n- slight code style update in path, print_all, set_key and wWinMain functions\n- new functions close and minimize, synonyms for SendMessageW WM_CLOSE and\nWM_SYSCOMMAND+SC_MINIMIZE\n- rename rebuild -> restart\n- refactor print_window to not call through to print_hwnd\n- refactor autorun to take launch args as function parameters\n- disable experimental hotkey for toggling app switching\n- fix bug causing switcher to be oversized if alt+`-ing while showing gui\n- separate alt+f4 & alt+q handling, and combine alt+w & alt+delete handling\n- fix a warning in wWinMain","shortMessageHtmlLink":"A little maintenance"}},{"before":"c47452a6f28115c73d95eadc7e6eb97cf3ed2e26","after":"07e83a031db902f05bafcba1b3b0e8305cd3d2e2","ref":"refs/heads/main","pushedAt":"2024-04-22T21:05:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"Update README.md - even better crop! :O","shortMessageHtmlLink":"Update README.md - even better crop! :O"}},{"before":"a6b1186796cf9609b85b63bb7fdbe9a6bed39d58","after":"c47452a6f28115c73d95eadc7e6eb97cf3ed2e26","ref":"refs/heads/main","pushedAt":"2024-03-25T14:20:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"Fix bad crop for screenshot in README.md","shortMessageHtmlLink":"Fix bad crop for screenshot in README.md"}},{"before":"1e0f8eb8cce34c0ed6f36c3588dd2d697a5a33cd","after":"a6b1186796cf9609b85b63bb7fdbe9a6bed39d58","ref":"refs/heads/main","pushedAt":"2024-03-25T14:05:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"Update screenshot in README.md","shortMessageHtmlLink":"Update screenshot in README.md"}},{"before":"38bb6671f11ede2aa3d2305b5170b109b6751557","after":"1e0f8eb8cce34c0ed6f36c3588dd2d697a5a33cd","ref":"refs/heads/main","pushedAt":"2024-03-17T06:38:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"5th cleanup / hackin' away...\n\nThe Highlights\n\n- Fix hanging Alt key (woohoo!)\n- Fix window restoring bug reported in issue #1\n- Fix initial white flash when showing GUI\n- Improvements to stability and snappiness: snappiness is happiness!\n- No GUI delay by default:\n After extended use, I have determined that the lesser visual impact of a\n narrow strip of icons vs. a possibly full-screen montage of window previews\n is enough to prevent the distraction for which GUI delay was introduced. Now\n I much prefer the snappiness of no delay. Nevertheless, the functionality of\n GUI delay will remain in cmdtab, but will be disabled by default.\n- Allow fast switching for both app- and window-switching (was only allowed for\n subwindow-switching)\n- Allow showing GUI switcher for both app- and window-switching (was only\n allowed for app-switching)\n- Dodge & weave between apps & windows by mixing & matching Alt-Tab & Alt-`\n- Long app names are now aligned to fit the switcher\n- Use Alt-W and Alt-Delete to close selected window (requires some testing)\n- Use Alt-M to minimize window (requires some testing)\n- Cmdtab will now (re)ask if you want to enable autorun *before* refusing to\n start if it's already running\n- Fixed a bug that caused cmdtab to no longer ask about autorun\n\nThe Sausage Making\n\ncleanup: minor code style changes\ncleanup: temporarily commented-out several debug prints\nrefactor: relocate 'struct style' definition\nrefactor: rename style_t members\nrefactor: rename selection_t member 'window' -> 'current'\nfeature: track whether the selected window has been shown. This is so that\n the next subwindow hotkey selects the top window after having\n Alt-Tab'ed, but otherwise selects the next subwindow.\nfeature: allow fast switching for both app- and window-switching (was only\n allowed for window-switching). 'Fast switching' means instantly showing\n the selected window (not waiting for Alt keyup or Enter).\nfeature: allow showing switcher gui for both app- and window-switching (was only\n allowed for app-switching)\nrefactor: remove global variables hMutexHandle, hMainInstance & hKeyboardHook\nrefactor: remove once() function. This was used to improve first-use impression\n by skipping gui show delay on the very first show, but I have opted to\n disable gui show delay by default (see below).\nbugfix: fix hanging Alt key (hurrah!)\nfeature: no longer default to using gui show delay. After extended use, I have\n determined that the lesser visual impact of a narrow row of icons vs. a\n possibly full-screen montage of window previews is enough to prevent\n the distraction for which gui delay was introduced. Now I much prefer\n the snappiness of no delay. Nevertheless, the functionality of gui\n delay will remain in cmdtab, but will be disabled by default.\nfeature: tweaked the size of the gui a little, vertically more compact,\n horizontally more roomy\nrefactor: use show_hwnd() from show_gui() instead of near-duplicate logic\n (mostly to dogfeed the ALTHACK)\nbugfix: return false from error branch in filter()\nrefactor: prettify some logic in filter()\nrefactor: new function print_hwnd() that can print any hwnd and doesn't reuse\n linked_window_t members. Also now prints class name in details.\nrefactor: refactor print_window() to use print_hwnd(), but short-circuit with a\n simple linked_window_t member print\nrefactor: remove find_hwnd(). This function was only used to find the\n linked_window_t that corresponded with the GetForegroundWindow().\n See notes below for select_foreground().\nrefactor: in select_foreground() remove implicit condition that the actual\n foreground window (as returned by GetForegroundWindow()) must also be\n a linked_window_t managed by us.\n Now, instead we simply pick windows.array[0], which is more consistent\n with the way we internal represent state, but is also potentially\n inconsistent with the actual foreground window since it may have been\n filtered out. (Commit 4ade8ea moved to a generic representation of the\n foreground window to support restoring to filtered-out windows.)\ncleanup: minor style change, and simplify some debug printing in select_next()\nrefactor: rename select_done() -> select_show()\nrefactor: redraw() function renamed -> draw_gui() and drawing logic completely\n overhauled (yummy code!) and improved\nfeature: draw_gui() now aligns long app names to fit the switcher\nrefactor: in LLKeyboardProc():\n - properly separate selection activation from navigation\nfeature: in LLKeyboardProc():\n - (as mentioned above) make the select next subwindow hotkey select the\n next top window (i.e. app) after having Alt-Tab'ed, but otherwise\n select the next subwindow\n - (as mentioned above) allow fast switching and showing gui switcher\n for both apps and subwindows\n - use Alt-W and Alt-Delete to close selected window\n - use Alt-M to minimize window\nfeature: cmdtab will now (re)ask if you want to enable autorun *before* refusing\n to start if it's already running\nbugfix: fix regression causing cmdtab to no longer ask about autorun\nfeature: remove all window decoration, except rounded corners\n - this seems to have fixed initial white flash when showing GUI\n (huzzah!) [either that, or the new drawing code did that...]\nbugfix: add a '> 0' check in message loop for total correctness\nbugfix: add a possibly unneccesary CloseHandle() call\n\nThe following changes were extracted from the otherwise sequential listing of\nchanges above to group together pieces of a larger refactor:\n\nrefactor: change all switcher gui functions to take hwnd parameter. This simple\n change had a radical effect on my understanding of an important,\n implicit dependency between window swithing state and GUI visibility.\n See comments in cancel() function. (Global vars can be evil!)\nrefactor: remove hide_gui(), functionality moved to new function cancel()\nrefactor: remove select_null(), functionality moved to new function cancel()\nrefactor: move 'restore' functionality from select_done() -> new fn cancel()\nrefactor: new function cancel():\n cmdtab strives to keep window selection state independent of GUI state\n (such that window switching can occur entirely without GUI), but\n cancelling selection upon window deactivation, and vice versa, is a\n desired feature, and this necessitates an irredicuble state\n dependency. This dependence escaped notice through the use of a global\n variable (hMainWindow), but is now encapsulated in the cancel()\n function and illustrated by the cancel() function taking both a\n selection_t parameter and a hwnd parameter.\n The cancel() function also absorbs the functionality of hide_gui(),\n select_null(), as well as the window restoring functionality\n previously in the select_done() [renamed select_show()] function.","shortMessageHtmlLink":"5th cleanup / hackin' away..."}},{"before":"4ade8ea65f52f74979dd741c1b0f4f6454b0f688","after":"38bb6671f11ede2aa3d2305b5170b109b6751557","ref":"refs/heads/main","pushedAt":"2024-03-17T04:35:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"bugfix: support restoring to any foreground window\n\nbugfix: support restoring to any foreground window when cancelling (not just filtered windows)\nfixes #1","shortMessageHtmlLink":"bugfix: support restoring to any foreground window"}},{"before":"37677966bd813e993fb827b40f9c78ed7dc7d29b","after":"4ade8ea65f52f74979dd741c1b0f4f6454b0f688","ref":"refs/heads/main","pushedAt":"2024-03-03T13:54:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"Cleanup repo\n\n- remove .gitattributes\n- remove .gitignore\n- remove cmdtab.sln\n- remove cmdtab.vcxproj.filters","shortMessageHtmlLink":"Cleanup repo"}},{"before":"b5ac3326fe7ed5b8b4a486363637dcb29e6f6876","after":"37677966bd813e993fb827b40f9c78ed7dc7d29b","ref":"refs/heads/main","pushedAt":"2024-03-03T13:37:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"4th cleanup\n\nHighlights\n- Filter more unwanted windows (especially a persistent explorer.exe window)\n- Display pretty names for more apps (ex. Github Desktop)\n- Fix autorun dialog spam on startup\n- Much prettier code\n\nPlay-by-play\n- refactor: introduce style_t\n- refactor: rename windows_t field count -> num_windows\n- refactor: add windows_t field 'num_apps' (see below)\n- refactor: remove selection.active, use selection.window instead\n- cleanup: small formatting fixes and comments\n- refactor: simplify title() after realizing GetWindowTextW() returns length\n- feature: appname(): fallback to Product Name if File Description is missing\n- cleanup: remove a bunch of commented-out code in filter()\n - THIS COMMIT MAY CONTAIN USEFUL WINDOW FILTERING TECHNIQUES WORTH\n RECOVERING AT SOME POINT\n- refactor: simplify several functions:\n - remove numapps(), use new windows.num_apps instead, set by link()\n - remove width(), move functionality to size_gui()\n - remove link(), move functionality to add()\n - remove wipe(), move functionality to rebuild()\n- refactor: other changes to functions:\n - size_gui() takes a style_t parameter\n - possibly a slight perf increase in add() (not measured)\n - reset windows.num_apps in rebuild()\n- feature: filter more unwanted windows\n - especially a persistent hidden explorer.exe window is hidden now\n- debug: print class name in print_window()\n- debug: option to print extended window details when using print_all()\n- refactor: return NULL from find_next if window parameter is NULL\n- cleanup: remove commented-out code in select_next()\n - this code was left here as an illustration of how a prior refactor\n would look at this site. The prior refactor also moved the\n location of this logic to LLKeyboardProc; the refactor was never\n active at this location\n- refactor: remove defensive check in select_done()\n- note: the redraw() function does not use style_t yet\n- refactor: only resize gui on init\n- bugfix: improve NULL robustness when window-switching by checking\n selection.window\n- bugfix: fix autorun dialog spam on startup\n\nPostscript\n- commit message for aeee53b (\"Second cleanup\") missed:\n \"refactor: remove should_switch & open_gui args from select_next()","shortMessageHtmlLink":"4th cleanup"}},{"before":"cee0f50924bc6c76ff33afdf8263652885ded8cc","after":"b5ac3326fe7ed5b8b4a486363637dcb29e6f6876","ref":"refs/heads/main","pushedAt":"2024-02-29T02:33:11.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"Tiny formatting corrections","shortMessageHtmlLink":"Tiny formatting corrections"}},{"before":"aeee53b9fe7dde8b3c53c7569f73ec2b3a22968d","after":"cee0f50924bc6c76ff33afdf8263652885ded8cc","ref":"refs/heads/main","pushedAt":"2024-02-27T03:01:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"Update README.md\n\n- Itty bitty executie\r\n- Putting the cute in exe-cute-able","shortMessageHtmlLink":"Update README.md"}},{"before":"9fce4ab05aa62a74ee46fa91ae3b8382c2d702e5","after":"aeee53b9fe7dde8b3c53c7569f73ec2b3a22968d","ref":"refs/heads/main","pushedAt":"2024-02-27T02:14:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"Second cleanup\n\nHighlights\n- Fix drawing bug (white rectangle in switcher GUI)\n- Cancel window switching by clicking outside switcher\n- Confirmation dialog when quitting cmdtab\n- Prettier code\n\nPlay-by-play\n- refactor: use typedef for vkCode\n- cleanup: pretty comment headers\n- cleanup: remove/reword/reflow more comments\n- cleanup: various minor style changes\n- refactor: rename config_t field show_delay -> gui_delay\n- refactor: declare winapi callbacks\n- refactor: isolate alt hack\n- cleanup: add & use 'countof' macro\n- cleanup: rename 'handle' variable -> 'process'\n- refactor: split width() into numapps() & width()\n- refactor: pass 'selection' as arg to gdi_redraw() (avoid global access)\n- refactor: merge gdi_init() & gdi_redraw() into redraw()\n- refactor: remove defensive checks in show() & toggle() regarding foreground\n window\n- refactor: simplify show()\n- refactor: simplify timer handling in toggle()\n- refactor: split toggle() into size_gui(), show_gui() & hide_gui()\n- refactor: remove some (hopefully redundant) checks in filter()\n- refactor: encapsulate window enumeration in new function rebuild()\n - move filter() (and debug printing) from add() to new function\n EnumProc()\n - change add() return type from bool -> void\n - move EnumWindows() call from link() to EnumProc()\n- refactor: move windows->count reset from link() to wipe()\n- refactor: move selection init code from cycle() to LowLevelKeyboardProc()\n- bugfix: fix drawing bug caused by timer delay in gui-drawing logic in cycle()\n- refactor: move gui-showing code from cycle() to LowLevelKeyboardProc()\n- refactor: remove hide_gui arg from done() (always hide gui)\n- refactor: change done() return type from bool -> void\n- refactor: simplify set_key()\n- refactor: disable CallNextHookEx() calls in LowLevelKeyboardProc (REGRESSION?)\n- refactor: move defaults() initialization from WndProc() to wWinMain()\n- feature: cancel window switching by clicking outside switcher\n- feature: confirm when quitting cmdtab\n- refactor: simplify wWinMain\n - inline & remove is_single_instance()\n - refactor & rename prompt_autorun() -> autorun()\n - greatly simplify window creation\n- refactor: remove TranslateMessage() from message loop\n- refactor: summary of function renames\n - show -> show_hwnd\n - toggle_now -> TimerProc\n - dump -> print_all\n - find -> find_hwnd\n - first -> find_first\n - last -> find_last\n - next -> find_next\n - cycle -> select_next\n - done -> select_done\n - LowLevelKeyboardProc -> LLKeyboardProc\n - prompt_autorun -> autorun\n- header: don't include SDKDDKVer.h (REGRESSION?)\n- header: add 'dbg_print' macro (not used yet)","shortMessageHtmlLink":"Second cleanup"}},{"before":"0861749af353495d945cdf8e0f3a1d085bdda9ab","after":"9fce4ab05aa62a74ee46fa91ae3b8382c2d702e5","ref":"refs/heads/main","pushedAt":"2024-02-04T22:29:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"First cleanup\n\nRemoved a bunch of leftover comments and commented-out code. This commit contains possibly interesting historical tidbits.","shortMessageHtmlLink":"First cleanup"}},{"before":"70a4469497c7bf64f3b16b34b13b32d79e4b53c3","after":"0861749af353495d945cdf8e0f3a1d085bdda9ab","ref":"refs/heads/main","pushedAt":"2024-02-02T11:15:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"(≖_≖ ) Update README.md\n\nDon't strikethrough \"(WIP)\"","shortMessageHtmlLink":"(≖_≖ ) Update README.md"}},{"before":"4b6ddfcc5ec8488988ee6ca6e01a304130fd7b71","after":"70a4469497c7bf64f3b16b34b13b32d79e4b53c3","ref":"refs/heads/main","pushedAt":"2024-02-02T11:06:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"better res img for README","shortMessageHtmlLink":"better res img for README"}},{"before":"fb3abf32b21a5e226387d1ea4104c1b2f0920a6f","after":"4b6ddfcc5ec8488988ee6ca6e01a304130fd7b71","ref":"refs/heads/main","pushedAt":"2024-02-02T10:58:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"1 img = 1k words","shortMessageHtmlLink":"1 img = 1k words"}},{"before":"ec351e7150474a1c1b2a26b6883a8de07d157e88","after":"fb3abf32b21a5e226387d1ea4104c1b2f0920a6f","ref":"refs/heads/main","pushedAt":"2024-01-31T19:08:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"(≖_≖ ) ly & WIP","shortMessageHtmlLink":"(≖_≖ ) ly & WIP"}},{"before":"5f87b4e42da458895c0ae1c8c4c875bb690a9d26","after":"ec351e7150474a1c1b2a26b6883a8de07d157e88","ref":"refs/heads/main","pushedAt":"2024-01-31T18:42:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"(≖_≖ ) emdash","shortMessageHtmlLink":"(≖_≖ ) emdash"}},{"before":"cdccb12bff04e7ef8d9b3a8d6cd4254a0f9c6aec","after":"5f87b4e42da458895c0ae1c8c4c875bb690a9d26","ref":"refs/heads/main","pushedAt":"2024-01-31T18:39:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"(≖_≖ ) Update README.md","shortMessageHtmlLink":"(≖_≖ ) Update README.md"}},{"before":"c4e4a8ddc3bfd0a9dd28d255b0beaec3d7c3f075","after":"cdccb12bff04e7ef8d9b3a8d6cd4254a0f9c6aec","ref":"refs/heads/main","pushedAt":"2024-01-31T17:52:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"Update README.md\n\nOkay I did the thing I said I would do","shortMessageHtmlLink":"Update README.md"}},{"before":null,"after":"c4e4a8ddc3bfd0a9dd28d255b0beaec3d7c3f075","ref":"refs/heads/main","pushedAt":"2024-01-31T17:29:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"stianhoiland","name":"Stian Gudmundsen Høiland","path":"/stianhoiland","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2081712?s=80&v=4"},"commit":{"message":"Make wrap bump enabled by default\n\nAs it should be, anyway. I just disabled it at some point for testing.","shortMessageHtmlLink":"Make wrap bump enabled by default"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEN3BTjQA","startCursor":null,"endCursor":null}},"title":"Activity · stianhoiland/cmdtab"}