The unofficial WWDC app for macOS

Overview

The unofficial WWDC app for macOS

Enjoy WWDC from the comfort of your Mac with the unofficial WWDC app for macOS. Whether you're (virtually) attending or not, you can access livestreams, videos and sessions during the conference and as a year-round resource.

In partnership with CocoaHub, you can also use the app's Community tab to browse through Apple announcements, updates to the Swift language, new episodes from your favorite podcasts, community blog posts, and more.

⬇️ If you just want to download the latest release, go to the website.

Schedule

The schedule tab shows the schedule for the current edition of WWDC, and allows you to watch live streams for the Keynote and other sessions throughout the week.

Videos

Watch this year's videos as they're released and access videos from previous years. You can also read transcripts of sessions and easily jump to a specific point in the relevant video. Transcripts are also searchable and available in

videos

Video features

  • Watch videos in 0.5x, 1x, 1.25x, 1.5x, 1.75x or 2x speeds
  • Fullscreen and native picture-in-picture support
  • Navigate video contents easily with the help of transcripts

Clip Sharing

Clip Sharing allows you to share a short segment (up to 5 minutes) from a session's video. This is a great feature for quickly sharing snippets of content from the conference.

clipsharing

Chromecast

You can watch WWDC videos (both live and on-demand) on your Chromecast. Just click the Chromecast button while playing a video, choose your device from the list and control playback using the Google Home app on your phone.

chromecast

Bookmarks

Have you ever found yourself watching a WWDC session and wishing you could take notes at a specific point in the video to refer back to later on? This is now possible with bookmarks.

With bookmarks, you can create a reference point within a video and add an annotation to it. Your bookmark annotations can also be considered while using the search, so it's easier than ever to find the content you've bookmarked before.

bookmarks

Community

Browse content curated by the CocoaHub team in the Community tab.

community

iCloud Sync

Enable the iCloud sync in preferences and your favorites, bookmarks and progress in sessions will be synced accross your Macs.

Sharing

You can easily share links to sessions or videos by using the share button. The links shared are universal links that redirect to Apple's developer website, so if they're opened on a Mac which has the app installed, they will open in the app. The links are also compatible with iOS devices using the Apple Developer app.

Nerdy bits 🤓

Code of Conduct

We expect all of our contributors to help uphold the values set out in our code of conduct. We fundamentally believe this will help us build a better community, and with it a better app.

Contributing

Please read the contribution guidelines before opening an issue or pull request.

External libraries

A number of third-party libraries are used by the app:

Internal libraries

  • ConfCore is the core of the app that deals with Apple's WWDC API, data storage, caching, syncing and transcripts (everything that has to do with data, basically)
  • ConfUIFoundation contains shared color, font definitions and other useful extensions used by the main app target and PlayerUI
  • PlayerUI contains the UI components for the video player and some general-purpose UI components used throughout the app
  • ThrowBack provides support for migration of user data and preferences from old versions of the app

Building the app

Building requires Xcode 12.4 or later.

Clone this branch and before opening the project, run ./bootstrap.sh to setup the environment. It will install swiftlint for you using brew if you don't have it yet.

Since the app uses CloudKit, when you build it yourself, all of the CloudKit-dependant functionality will not be available. CloudKit requires a provisioning profile and a paid developer account.

To build the app yourself without the need for a developer account and a CloudKit container, always use the WWDC target when building. The WWDC with iCloud target requires a paid developer account and a CloudKit container, which you won't be able to create because of the app's bundle identifier.

schedule

Clearing app data during development

If you need to clear the app's preferences and stored data during development, you can run ./cleardata.sh in the project folder. This will delete all of your preferences and data like favorites, bookmarks and progress in videos, so be careful.

Issues
  • The app freeze everytime it's launched

    The app freeze everytime it's launched

    For the first time I launched the app, it displayed a spinner, and there was no way to quit unless than using force quit. For the second time and so on, it displays the last displayed video, and just stuck there. The app becomes unresponsive and I can't click anything in the window.

    I've tried to clear the data in ~/Library but it still doesn't work after reinstalling.

    Stacks: (this also include app version & system info) WWDC_2017-08-12-110902_Edwards-iMac.hang.zip

    bug: crash needs reproduction 
    opened by icenel 23
  • Increase contrast in the search field if the matching accessibility feature is turned on.

    Increase contrast in the search field if the matching accessibility feature is turned on.

    If "Increase contrast" is turned on in the accessibility settings, macOS will use a darker shade of gray for text fields, assuming that the background is set to a light colour. However, since WWDC uses a dark background, the text field becomes pretty much unreadable:

    before_patch

    After this patch the same control looks as such:

    after_patch

    The patch also makes the application listen for accessibility state changes and change the text colour accordingly.

    Technically speaking, all of this may be sidestepped by just forcing the NSSearchField to always display using NSColor.white (or an appropriate light colour), but maybe that is not desirable.

    opened by agatti 20
  • Feature Request: Display a List of Related Videos

    Feature Request: Display a List of Related Videos

    Hi gui,

    Thanks for the amazing Mac App the official iOS version is horrible, I have been using the App for a week and think the following may make the UX better.

    It would be great if the app can have a related video's section under the Main Video view.

    The WWDC app for iOS does this and this is very helpful for finding related videos on a topic that you watch.

    Otherwise, I have to search for the Video first on the iOS app check the related videos and then search for the exact name of the session in the Mac App.

    Don't know if this can be implemented if you are just scrapping Apple's website for videos, hoping for the best.

    Would love to help to get this feature implemented if it's possible.

    feature ux 
    opened by nik6018 19
  • Update project to Swift 4.1 Xcode 9.3

    Update project to Swift 4.1 Xcode 9.3

    I will be tracking the necessary work to get the project ready for Swift 4.1 and Xcode 9.3 here.

    Xcode 9.3 recommended configuration suggested that some warnings should be enabled, I did so and fixed some of the ObjC code, this change is not strictly necessary but does not break anything (At least should not). If modifying the ObjC code is not desirable let me know so I remove the commit.

    Currently project is working fine for Xcode 9.3 beta 2.

    opened by otaviolima 19
  • Show time preview when hovering over the timeline

    Show time preview when hovering over the timeline

    I think we should show a preview for the time under the mouse cursor when hovering over the timeline, it would make it a lot easier to jump into a specific point in a video.

    player ux 
    opened by insidegui 19
  • Downloads management window, pause, resume, cancel, etc

    Downloads management window, pause, resume, cancel, etc

    Largely resolves #422

    I took some design license, but I'm open to feedback. The downloads window lets you manage your downloads. Downloads continue after quitting and can be accessed the next time the app is launched. The window design mimics Safari's implementation.

    This PR does not:

    • provide an overall progress in the button
    • provide time remaining estimates
    • provide throughput information

    This PR does:

    • maintain all functionality that already exists
    • attempts to work for the users
    • attempts to be performant in many usage scenarios, including attempting to download the entire collection of WWDC videos
    • Updates some tangentially related code for clarity
    • Hopes to be loved and cherished by the users
    • Has a major weakness if you cancel a large number of downloads while the management window is open
    opened by allenhumphreys 18
  • Crash:

    Crash: "Cannot register notification blocks from within write transactions"

    I've seen this crash happen every now and then, it seems to be timing-related and I think it's happening somewhere in the sync engine. I tried moving all sync engine Realm operations to a background Realm, but then we lost the ability to prevent Realm update notifications from being sent when saving sync-related data, which caused sync loops.

    Backtrace provided by @tkrajacic:

    Application Specific Information:
    Crashing on exception: Cannot register notification blocks from within write transactions.
    
    Application Specific Backtrace 1:
    0   CoreFoundation                      0x00007fff32b18797 __exceptionPreprocess + 250
    1   libobjc.A.dylib                     0x00007fff6b9aba9e objc_exception_throw + 48
    2   Realm                               0x0000000105053978 -[RLMRealm addNotificationBlock:] + 0
    3   Realm                               0x000000010505d089 -[RLMResults addNotificationBlock:] + 52
    4   RealmSwift                          0x0000000104d5ab5b $s10RealmSwift7ResultsV7observeySo20RLMNotificationTokenCyAA0A16CollectionChangeOyACyxGGcF + 203
    5   RxRealm                             0x0000000104b32681 $s10RealmSwift03AnyA10CollectionVyxG02RxA019NotificationEmitterA2eFP7observeySo20RLMNotificationTokenCyAA0aD6ChangeOyxGcFTWTm + 113
    6   RxRealm                             0x0000000104b32606 $s10RealmSwift7ResultsVyxG02RxA019NotificationEmitterA2eFP7observeySo20RLMNotificationTokenCyAA0A16CollectionChangeOyxGcFTW + 38
    7   RxRealm                             0x0000000104b32b09 $s7RxSwift14ObservableTypeP0A5RealmAD19NotificationEmitter7ElementRpzrlE10collection4from16synchronousStartAA0C0CyAGGAG_SbtFZAA10Disposable_pAA11AnyObserverVyAGGcfU_ + 265
    8   RxRealm                             0x0000000104b35dd6 $s7RxSwift14ObservableTypeP0A5RealmAD19NotificationEmitter7ElementRpzrlE10collection4from16synchronousStartAA0C0CyAGGAG_SbtFZAA10Disposable_pAA11AnyObserverVyAGGcfU_TATm + 38
    9   RxRealm                             0x0000000104b35c90 $s7RxSwift14ObservableTypeP0A5RealmAD19NotificationEmitter7ElementRpzrlE10collection4from16synchronousStartAA0C0CyAGGAG_SbtFZAA10Disposable_pAA11AnyObserverVyAGGcfU_TA + 16
    10  RxSwift                             0x0000000104b8f84c $s7RxSwift19AnonymousObservable33_95EBF5692819D58425EC2DD0512D115ALLC3run_6cancelAA10Disposable_p4sink_AaG_p12subscriptiontqd___AA10Cancelable_pt7ElementQyd__RszAA12ObserverTypeRd__lF + 316
    11  RxSwift                             0x0000000104b9db6e $s7RxSwift8ProducerC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lFAaE_pyt_tcfU_ + 366
    12  RxSwift                             0x0000000104b9dc09 $s7RxSwift8ProducerC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lFAaE_pyt_tcfU_TA + 25
    13  RxSwift                             0x0000000104b9dc41 $s7RxSwift10Disposable_pIegr_ytAaB_pIegnr_TRTA + 17
    14  RxSwift                             0x0000000104b95220 $s7RxSwift22CurrentThreadSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF + 288
    15  RxSwift                             0x0000000104b9d6b8 $s7RxSwift8ProducerC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF + 648
    16  RxSwift                             0x0000000104ba55c0 $s7RxSwift9MergeSink33_DDEA0423368B3B462AE46699A4D080E1LLC14subscribeInneryyAA10ObservableCy7ElementQy_GF + 480
    17  RxSwift                             0x0000000104ba53bf $s7RxSwift9MergeSink33_DDEA0423368B3B462AE46699A4D080E1LLC2onyyAA5EventOyxGF + 1119
    18  RxSwift                             0x0000000104ba6190 $s7RxSwift9MergeSink33_DDEA0423368B3B462AE46699A4D080E1LLCyxq_q0_GAA12ObserverTypeA2aFP2onyyAA5EventOy7ElementQzGFTW + 16
    19  RxSwift                             0x0000000104b98103 $s7RxSwift4SinkC9forwardOnyyAA5EventOy7ElementQzGF + 99
    20  RxSwift                             0x0000000104be0258 $s7RxSwift7MapSink33_5428EFA9A9B0C0340021B871D2E5AC01LLC2onyyAA5EventOyxGF + 552
    21  RxSwift                             0x0000000104be03b0 $s7RxSwift7MapSink33_5428EFA9A9B0C0340021B871D2E5AC01LLCyxq_GAA12ObserverTypeA2aFP2onyyAA5EventOy7ElementQzGFTW + 16
    22  RxSwift                             0x0000000104b98103 $s7RxSwift4SinkC9forwardOnyyAA5EventOy7ElementQzGF + 99
    23  RxSwift                             0x0000000104b8f615 $s7RxSwift23AnonymousObservableSink33_95EBF5692819D58425EC2DD0512D115ALLC2onyyAA5EventOy7ElementQzGF + 325
    24  RxSwift                             0x0000000104b8f700 $s7RxSwift23AnonymousObservableSink33_95EBF5692819D58425EC2DD0512D115ALLCyxGAA12ObserverTypeA2aFP2onyyAA5EventOy7ElementQzGFTW + 16
    25  RxSwift                             0x0000000104bf02e3 $sTA + 67
    26  RxSwift                             0x0000000104b711ec $s7RxSwift11AnyObserverV2onyyAA5EventOyxGF + 12
    27  RxSwift                             0x0000000104bf00b6 $s7RxSwift12ObserverTypePAAE6onNextyy7ElementQzF + 166
    28  RxRealm                             0x0000000104b32df8 $s7RxSwift14ObservableTypeP0A5RealmAD19NotificationEmitter7ElementRpzrlE10collection4from16synchronousStartAA0C0CyAGGAG_SbtFZAA10Disposable_pAA11AnyObserverVyAGGcfU_y0eB00E16CollectionChangeOyAGGcfU_ + 568
    29  RxRealm                             0x0000000104b378c9 $s7RxSwift14ObservableTypeP0A5RealmAD19NotificationEmitter7ElementRpzrlE10collection4from16synchronousStartAA0C0CyAGGAG_SbtFZAA10Disposable_pAA11AnyObserverVyAGGcfU_y0eB00E16CollectionChangeOyAGGcfU_TA + 41
    30  RxRealm                             0x0000000104b36ef4 $s10RealmSwift0A16CollectionChangeOyAA7ResultsVyxGGIegn_AGIegg_AA0aC5ValueRzlTRTA + 52
    31  RealmSwift                          0x0000000104d5ba3b $s10RealmSwift7ResultsV7observeySo20RLMNotificationTokenCyAA0A16CollectionChangeOyACyxGGcFySo10RLMResultsCyyXlGSg_So013RLMCollectionH0CSgs5Error_pSgtcfU_TA + 107
    32  RealmSwift                          0x0000000104d3c47e $sSo10RLMResultsCyyXlGSgSo19RLMCollectionChangeCSgs5Error_pSgIegggg_AdGSo7NSErrorCSgIeyByyy_TR + 94
    33  Realm                               0x0000000104fd69be _ZZ23RLMAddNotificationBlockIN5realm7ResultsEEP20RLMNotificationTokenP11objc_objectRT_U13block_pointerFvS5_P19RLMCollectionChangeP7NSErrorEbENKUlRKNS0_19CollectionChangeSetESt13exception_ptrE_clESG_SH_ + 198
    34  Realm                               0x0000000104fd67b4 _ZN5realm24CollectionChangeCallback4ImplIZ23RLMAddNotificationBlockINS_7ResultsEEP20RLMNotificationTokenP11objc_objectRT_U13block_pointerFvS7_P19RLMCollectionChangeP7NSErrorEbEUlRKNS_19CollectionChangeSetESt13exception_ptrE_E5afterESI_ + 26
    35  Realm                               0x0000000104f8553f _ZN5realm5_impl18CollectionNotifier13after_advanceEv + 399
    36  Realm                               0x0000000104f8619d _ZN5realm5_impl15NotifierPackage13after_advanceEv + 35
    37  Realm                               0x00000001050a7adb _ZN5realm5_impl11transaction5beginERKNSt3__110unique_ptrINS_11SharedGroupENS2_14default_deleteIS4_EEEEPNS_14BindingContextERNS0_15NotifierPackageE + 468
    38  Realm                               0x0000000104fb337b _ZN5realm5_impl16RealmCoordinator16promote_to_writeERNS_5RealmE + 157
    39  Realm                               0x0000000105087dd6 _ZN5realm5Realm17begin_transactionEv + 180
    40  Realm                               0x0000000105053e1c -[RLMRealm beginWriteTransaction] + 15
    41  ConfCore                            0x0000000104978054 block_destroy_helper + 86388
    42  ConfCore                            0x000000010490eba9 globalinit_33_B8BAEC25FCBA0721953811C918E440CD_func2 + 2313
    43  libdispatch.dylib                   0x00007fff6caf06c4 _dispatch_call_block_and_release + 12
    44  libdispatch.dylib                   0x00007fff6caf1658 _dispatch_client_callout + 8
    45  libdispatch.dylib                   0x00007fff6cafccab _dispatch_main_queue_callback_4CF + 936
    46  CoreFoundation                      0x00007fff32adbb93 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    47  CoreFoundation                      0x00007fff32a9b81a __CFRunLoopRun + 2042
    48  CoreFoundation                      0x00007fff32a9a9c3 CFRunLoopRunSpecific + 466
    49  HIToolbox                           0x00007fff316b7abd RunCurrentEventLoopInMode + 292
    50  HIToolbox                           0x00007fff316b77d5 ReceiveNextEventCommon + 584
    51  HIToolbox                           0x00007fff316b7579 _BlockUntilNextEventMatchingListInModeWithFilter + 64
    52  AppKit                              0x00007fff2fcff829 _DPSNextEvent + 883
    53  AppKit                              0x00007fff2fcfe070 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1352
    54  AppKit                              0x00007fff2fcefd7e -[NSApplication run] + 658
    55  AppKit                              0x00007fff2fcc1b86 NSApplicationMain + 777
    56  libdyld.dylib                       0x00007fff6cb4acc9 start + 1
    
    Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
    0   com.apple.AppKit              	0x00007fff300e1b43 -[NSApplication _crashOnException:] + 106
    1   com.apple.AppKit              	0x00007fff300e1a26 -[NSApplication reportException:] + 901
    2   com.apple.AppKit              	0x00007fff3019155d uncaughtErrorProc + 145
    3   com.apple.CoreFoundation      	0x00007fff32b916b8 __handleUncaughtException + 726
    4   libobjc.A.dylib               	0x00007fff6b9ada51 _objc_terminate() + 90
    5   libc++abi.dylib               	0x00007fff69e80887 std::__terminate(void (*)()) + 8
    6   libc++abi.dylib               	0x00007fff69e80829 std::terminate() + 41
    7   libdispatch.dylib             	0x00007fff6caf166c _dispatch_client_callout + 28
    8   libdispatch.dylib             	0x00007fff6cafccab _dispatch_main_queue_callback_4CF + 936
    9   com.apple.CoreFoundation      	0x00007fff32adbb93 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    10  com.apple.CoreFoundation      	0x00007fff32a9b81a __CFRunLoopRun + 2042
    11  com.apple.CoreFoundation      	0x00007fff32a9a9c3 CFRunLoopRunSpecific + 466
    12  com.apple.HIToolbox           	0x00007fff316b7abd RunCurrentEventLoopInMode + 292
    13  com.apple.HIToolbox           	0x00007fff316b77d5 ReceiveNextEventCommon + 584
    14  com.apple.HIToolbox           	0x00007fff316b7579 _BlockUntilNextEventMatchingListInModeWithFilter + 64
    15  com.apple.AppKit              	0x00007fff2fcff829 _DPSNextEvent + 883
    16  com.apple.AppKit              	0x00007fff2fcfe070 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1352
    17  com.apple.AppKit              	0x00007fff2fcefd7e -[NSApplication run] + 658
    18  com.apple.AppKit              	0x00007fff2fcc1b86 NSApplicationMain + 777
    19  libdyld.dylib                 	0x00007fff6cb4acc9 start + 1
    
    bug: crash core 
    opened by insidegui 17
  • Calendar Support

    Calendar Support

    I noticed today while I was viewing sessions on my computer that there is no support for quickly adding a session to the calendar. The officially WWDC app has this so I thought I should add it.

    By the way, thanks for the awesome app @insidegui 🙂

    TODO:

    • [x] Support for adding session to the calendar

    • [x] Only show calendar button when WWDC is active

    • [x] Store eventIdentifier somewhere so it can be referenced later so the user can remove the event from the app

    opened by SoneeJohn 16
  • Saves and restores filter state across launches

    Saves and restores filter state across launches

    I don't think this PR is ready, but I'm opening it to get some feedback. My implementation is simple in it's approach, yet effective. In ObjC I would've just encoded the object graphs by adopting the NSCoding protocol. But that isn't very Swifty and I didn't think it prudent to make all of the filter types objects.

    Suggestions welcome. Nothing is too small.

    opened by allenhumphreys 16
  • Save split size between launches

    Save split size between launches

    Thanks for adding the window size saving so quickly! If I adjust the split and close the app, when I relaunch the split is 50% | 50%, dead center. It would be nice if the split setting was saved as well.

    bug help wanted 
    opened by dmthomas 16
  • Eggy looking sound control element

    Eggy looking sound control element

    • Version of macOS: 11.4
    • Version of the app: 7.3.3
    • What were you trying to do when the issue happened: Just open the first video.

    Tried to fix it myself but failed to build the app without paid developer account 😢

    Actual result image

    Expected result image

    bug 
    opened by japanese-goblinn 0
  • Feature Request: Option for sorting by session number

    Feature Request: Option for sorting by session number

    Currently, videos are sorted by title. Optionally sorting by session number would make it easier to browse and watch videos in chronological/topical order.

    opened by martinwinter 0
  • Feature: SharePlay

    Feature: SharePlay

    There's still a lot to be done in order for this to be included in a non-beta version of the app:

    • [ ] Starting the playback of a different session than the one that's currently playing after initiating SharePlay should switch all participants to that session
    • [ ] The same scenario above should probably warn the user before proceeding, to prevent accidental disturbances to all participants in the session
    • [ ] I've noticed that the speed button in the player doesn't reflect speed changes coming from the SharePlay session
    • [ ] Could we add the ability for participants to add bookmarks in such a way that they sync to all participants? 🤔
    • [ ] Wait for Monterey RC before releasing
    opened by insidegui 0
  • Subtitle button is missing after download video

    Subtitle button is missing after download video

    • Version of macOS: 10.15.7
    • Version of the app: 7.3.3
    • What were you trying to do when the issue happened After download video Screen Shot 2021-06-08 at 8 51 29 PM
    opened by young40 2
  • Feature Request: Watch List (Queue) or Watch Later

    Feature Request: Watch List (Queue) or Watch Later

    It would be great to be able to create watch lists just like youtube does. So that the user can manually categorize videos for different purposes (watch later, ARKit series across different years, etc.)

    feature 
    opened by difujia 0
  • Application performance degrades over time if

    Application performance degrades over time if "Referesh Schedule and Videos Periodically" is enabled

    There seems to be a performance issue related to Realm, the more times the refresh logic is run, the slow Realm operations become.

    If you encounter hangs or high CPU usage after the app is open for one extended period of time, please ensure the setting is off

    bug 
    opened by allenhumphreys 1
  • The Max Speed of Lan Went Down After WWDC Played and Paused an Online Video

    The Max Speed of Lan Went Down After WWDC Played and Paused an Online Video

    • Version of macOS 10.15.6 (19G2021)

    • Version of the app 7.1

    • What were you trying to do when the issue happened I have a Mac mini connected a router with ethernet (1000Mbps). An iMac 5K connected the router with WiFi(5G Wifi 5). Normally, the speed of downloading a file from Mac mini to iMac was around 90MB/s. However, if I played an online video and paused it by playing another local downloaded video in WWDC. The speed of downloading would turn to around 60MB/s. After I closed WWDC app entirely, the speed went back to normal.

    Steps:

    1. open WWDC app.
    2. download a file from the Mac mini to iMac through Finder. the speed is normal.
    3. download a session video in WWDC.
    4. when the download ends, play another online video.
    5. pause the online video, it stops but is still caching.
    6. play the previous downloaded video and pause it too.
    7. switch back to the previous played online video, the caching is stopped.
    8. do step 2 again, the speed is narrowed.
    9. close WWDC app
    10. do step 2 again, the speed is normal.
    • Any particular hardware/software configuration you have that might be affecting the app iMac 5K 2014 late, Xiaomi AX3600 Router
    wwdc max speed issue

    As you can see from the screenshot, above the horizontal orange line are the narrowed speed graphs, below are the normal speed graphs.

    needs reproduction 
    opened by owenzhao 10
  • Ability to see video length on thumbnail

    Ability to see video length on thumbnail

    Please add video length on the video thumbnail just like the official Developer app from Apple.

    Right now, I can see the length if I click to go to detail screen, but I would have to do it one by one. It would be great to see the length of each video in a glance so that if i have like 15 minutes, I know which one I can watch.

    feature good first issue 
    opened by davuthdv 6
  • Ability to filter for Non-Downloaded videos.

    Ability to filter for Non-Downloaded videos.

    Hopefully this desired functionality can adequately be described as being the opposite of what the 'Downloaded' filter provides. Essentially displaying what videos have not yet been been download, allowing one to hone in on what videos may want to be added to the download queue.

    This would be in addition to the existing downloaded indicator within each list cell, and would most likely (hopefully) have no bearing on this nicety.

    feature 
    opened by luvvie 0
  • Add the count of displayed items in the left schedule/video list

    Add the count of displayed items in the left schedule/video list

    When the user filters the amount of items in the left list decreases. It would be nice, also as motivation to watch more session videos, to know how much videos are left in the left list, e.g. when I activated the unwatched filter.

    feature good first issue 
    opened by Blackjacx 4
Releases(7.4-b2)
  • 7.4-b2(Jul 1, 2021)

    Addresses a crash on launch when running on macOS Monterey Developer Beta 2.

    This is a pre-release version that includes the ability to watch sessions together with friends using SharePlay on FaceTime. This feature requires all participants to be running the macOS Monterey beta.

    image

    The SharePlay button shows up automatically in the app's titlebar during FaceTime calls.

    Source code(tar.gz)
    Source code(zip)
    WWDC_v7.4-1026.dmg(19.47 MB)
  • 7.4(Jun 11, 2021)

    This is a pre-release version that includes the ability to watch sessions together with friends using SharePlay on FaceTime. This feature requires all participants to be running the macOS Monterey beta.

    image

    The SharePlay button shows up automatically in the app's titlebar during FaceTime calls.

    Source code(tar.gz)
    Source code(zip)
    WWDC_v7.4-1025.dmg(19.46 MB)
  • 7.3.3(Jun 7, 2021)

    This is a minor patch to version 7.3.2 that addresses an issue with the Raycast integration.

    • Updated for WWDC 2021
    • Adds integration with Raycast so that you can find your WWDC content there (this must be enabled in preferences)
    • Addresses an issue that prevented sessions from being unfavorited
    • Minor bug fixes
    Source code(tar.gz)
    Source code(zip)
    WWDC_v7.3.3-1024.dmg(19.53 MB)
  • 7.3.2(Jun 7, 2021)

    This is a minor patch to version 7.3.1 that addresses an issue which caused links for live sessions to not reveal the correct tab within the app.

    • Updated for WWDC 2021
    • Adds integration with Raycast so that you can find your WWDC content there (this must be enabled in preferences)
    • Addresses an issue that prevented sessions from being unfavorited
    • Minor bug fixes
    Source code(tar.gz)
    Source code(zip)
    WWDC_v7.3.2-1022.dmg(19.53 MB)
  • 7.3.1(Jun 3, 2021)

    This is a minor patch to version 7.3 that addresses an issue where Raycast integration wouldn't work when running on a macOS version below 11.3. The original release notes can be found below.

    • Updated for WWDC 2021
    • Adds integration with Raycast so that you can find your WWDC content there (this must be enabled in preferences)
    • Addresses an issue that prevented sessions from being unfavorited
    • Minor bug fixes
    Source code(tar.gz)
    Source code(zip)
    WWDC_v7.3.1-1021.dmg(19.53 MB)
  • 7.3(Jun 1, 2021)

  • 7.2(Apr 5, 2021)

  • 7.2-b2(Mar 30, 2021)

  • 7.2-b1(Dec 2, 2020)

  • 7.1.1(Sep 14, 2020)

  • 7.1(Jul 20, 2020)

    This update improves the performance and reliability of the app, including fixes for common crashes which were affecting a significant number of users.

    • Fixes a crash that would occur when the directory in "~/Library/Application Support" used by the app had the wrong persmissions for the current user. The app will now display an appropriate error message in the UI.
    • Addresses a common crash that would occur while playing videos.
    • Fixes some syncing issues that could happen if the user deleted their iCloud data for the WWDC app.
    • The session summary text is now scrollable, leaving more space for the video area when it is not in full screen.
    • Fixes an issue that would prevent Clip Sharing from working when in the "Schedule" tab.
    Source code(tar.gz)
    Source code(zip)
    WWDC_v7.1.zip(10.71 MB)
  • 7.0.2(Jun 15, 2020)

  • 7.0.1(Jun 11, 2020)

  • 7.0(Jun 3, 2020)

    Welcome to WWDC for macOS version 7!

    This update has lots of fixes and improvements, as well as some cool new features.

    • The app's UI has been modernized to look better in macOS Catalina, with new fonts and colors
    • The video player has also received a UI refresh to improve the contrast between controls and the background
    • Transcripts are now provided by Apple, which means they're the same as the ones in the Apple Developer app, including support for multiple languages
    • You can now search within a specific session's transcript
    • The transcript can now be detached into its own window, so you can rearrange your workspace with more flexibility, such as putting the video and transcript side-by-side in fullscreen
    • Meet the new Community tab: in partnership with CocoaHub, we're bringing you curated content from the community, including Apple announcements, blog posts, podcast episodes, conference videos, and more
    • Clip Sharing: if you've ever wanted to share a specific segment of a video with someone, you now can! With a downloaded video selected, just click the scissors button and select a portion of the video to share
    Source code(tar.gz)
    Source code(zip)
    WWDC_v7.zip(10.99 MB)
  • 6.2(Apr 5, 2020)

    • The app is now notarized.
    • Adds a number of keyboard shortcuts
      • Increase/reduce playback speed with plus or minus keys respectively.
      • Increase reverse speed/pause/increase forward speed with J/K/L respectively.
    • Section headers categorising sessions into Tracks now show when filters and searches are active.
    • Improvements to the control overlay when viewing videos.
      • Increased contrast.
      • Fixes two issues which saw the control overlay stay on-screen when the mouse was not focused on the video.
    • Fixes an issue in which some related sessions were not shown.
    • Fixes an issue with transcripts.
    • Fixes a networking alert which was shown too readily.
    • Fixes an issue which affected users who cancelled when changing their download directory.
    Source code(tar.gz)
    Source code(zip)
    WWDC_v6.2.zip(13.56 MB)
  • 6.1.2(May 14, 2019)

  • 6.1(Nov 6, 2018)

    • New "Featured" tab shows important new videos highlighted by Apple
    • The app is now optimized for macOS Mojave and will adopt the user's preferred accent color
    • New download manager: you can now see the progress and manage all downloads from a single location
    • Many other smaller fixes and improvements
    Source code(tar.gz)
    Source code(zip)
    WWDC_v6.1.zip(21.10 MB)
  • 6.0.4(Jul 4, 2018)

    Our "iOS 12" release

    WWDC came and went and a huge topic, especially for iOS 12, was performance and stability. Inspired by that, we're releasing WWDC for macOS 6.0.4, with the following fixes:

    • Player timestamps now use the correct monospace system font
    • Optimized the UI for faster interactions
    • Fixed related sessions navigation so that it can expose the destination session
    • Fixed a hang that would occur sometimes when the app was loading its data
    • Fixed fullscreen player hiding incorrectly when browsing sessions
    • Fixed a hang that could occur when starting playback of a streaming video
    • Fixed an issue that would prevent the space bar from playing/pausing the video
    • Fixed an issue where the cursor would be hidden when switching spaces while playing in fullscreen
    • Transcripts from ASCIIWWDC are now downloaded over HTTPS

    We also made some enhancements:

    • Enabled subtitles for 2017 and 2018 (thanks Mattt)
    • The player now allows play/pause while the app is not the frontmost app
    • It's now possible to seek using the keyboard arrow keys
    • Option-clicking the speed button on the player will go to the previous playback speed
    • In the share menu, there's now an option to copy the link for a session to the clipboard

    Source code(tar.gz)
    Source code(zip)
    WWDC_v6.0.4.zip(15.34 MB)
  • 6.0.3(Jun 5, 2018)

  • 6.0.2(Jun 4, 2018)

  • 6.0.1(Jun 2, 2018)

    This version contains some bugfixes so you can have a great experience during this WWDC week.
    Below are the full release notes for 6.0, in case you missed them:

    WWDC 6.0 release notes

    This is a major update of the app with some great new features and improvements:

    iCloud Sync (beta)

    That's right! You can now sync your favorites, bookmarks and progress in videos between multiple computers. All you need is to be logged in to your iCloud account.

    Related Sessions

    When watching a specific session, we will show related sessions to you so you can binge watch and expand your learning.

    Session Links

    Some special events and labs require you to make an appointment, some special events have links for directions. We now show those important links at the bottom of the session details so you can schedule an appointment or find directions right from the app.

    "Now Playing" integration and Bluetooth control

    Playback in the app will now show in the "Now Playing" Notification Center widget. This also means you can control playback using your AirPods (or any other Bluetooth headphone).

    Touch Bar support

    The player now shows its controls in the Touch Bar so you can easily control playback anywhere in the app without moving your mouse.

    Calendar integration

    If you see a session in the schedule you'd really like to attend, just click the calendar button in the session details and an event will be added to your calendar. Remember you can still ask Siri to remind you about a session when you have it selected in the app!

    State restoration improvements

    You can quit the app without worrying about losing your place. Everything will be back where you left off when you launch it again, including search and filters.

    Improved Chromecast support

    We have updated Chromecast support to be even better and more stable, enjoy watching the keynote on your big screen.

    Source code(tar.gz)
    Source code(zip)
    WWDC_v6.0.1.zip(15.34 MB)
  • 6.0(May 30, 2018)

    Happy WWDC 2018! 🎉

    This is a major update of the app with some great new features and improvements:

    iCloud Sync (beta)

    That's right! You can now sync your favorites, bookmarks and progress in videos between multiple computers. All you need is to be logged in to your iCloud account.

    Related Sessions

    When watching a specific session, we will show related sessions to you so you can binge watch and expand your learning.

    Session Links

    Some special events and labs require you to make an appointment, some special events have links for directions. We now show those important links at the bottom of the session details so you can schedule an appointment or find directions right from the app.

    "Now Playing" integration and Bluetooth control

    Playback in the app will now show in the "Now Playing" Notification Center widget. This also means you can control playback using your AirPods (or any other Bluetooth headphone).

    Touch Bar support

    The player now shows its controls in the Touch Bar so you can easily control playback anywhere in the app without moving your mouse.

    Calendar integration

    If you see a session in the schedule you'd really like to attend, just click the calendar button in the session details and an event will be added to your calendar. Remember you can still ask Siri to remind you about a session when you have it selected in the app!

    State restoration improvements

    You can quit the app without worrying about losing your place. Everything will be back where you left off when you launch it again, including search and filters.

    Improved ChromeCast support

    We have updated ChromeCast support to be even better and more stable, enjoy watching the keynote on your big screen.

    Source code(tar.gz)
    Source code(zip)
    WWDC_v6.0.zip(15.34 MB)
  • 5.3(Sep 24, 2017)

  • 5.2(Sep 8, 2017)

    • You can now search by session number
    • Improved filtering performance and animation
    • We have set a maximum width for the sidebar
    • The sidebar width is now synchronized between the schedule and videos tabs
    • The sidebar width will now be restored when you quit the app
    • Closing the PiP window will no longer bring up the app
    • Fixed an issue that would prevent some videos from being marked as watched
    • Fixed a bug that would cause the thumbnails to not be loaded correctly sometimes
    • Fixed a rendering issue in back/forward buttons when set to 15s
    • Fixed an issue where the schedule would show non-schedule items when filtering
    Source code(tar.gz)
    Source code(zip)
    WWDC_v5.2.zip(15.26 MB)
  • 5.1.3(Jul 6, 2017)

  • 5.1.2(Jun 22, 2017)

  • Fixes an issue where previously downloaded sessions with files deleted would still appear as downloaded
  • Improves transcript indexing, now transcripts become available as they're being indexed, not just after all transcripts have been indexed
  • Uses less disk space for the main database file
  • Fixes an issue where sessions would appear as downloaded on the sidebar when filtering even though they were not
  • Adds a "Reveal in Finder" menu item to the contextual menu on the sidebar
  • Improves performance of storage operations
  • Source code(tar.gz)
    Source code(zip)
    WWDC_v5.1.2.zip(15.20 MB)
  • 5.1.1(Jun 15, 2017)

    NOTE: when you first launch this version of the app, it's going to redownload and reindex the session transcripts, this is neccessary to fix an issue that would occur when searching in previous versions.

    • Fixed an issue where searching with transcripts enabled would return sessions that didn't match the selected filters
    • Improved behavior of the contextual menu for downloaded sessions
    • Fixed an issue where the computer would still enter screen saver or sleep during video playback
    • Overall performance improvements
    Source code(tar.gz)
    Source code(zip)
    WWDC_v5.1.1.zip(15.18 MB)
  • 5.1(Jun 13, 2017)

  • Fixed an issue where the app would hang for several seconds when launched
  • Improved look of special events and get-together thumbnails
  • Adds contextual menu to lists so you can easily change favorites, mark sessions as watched or download multiple sessions
  • Improved audio when playing videos at speeds higher than 1x
  • Source code(tar.gz)
    Source code(zip)
    WWDC_v5.1.zip(15.18 MB)
  • 5.0.8(Jun 8, 2017)

Owner
Guilherme Rambo
iOS and Mac developer.
Guilherme Rambo
MySQL/MariaDB database management for macOS

Sequel Ace Sequel Ace is the "sequel" to longtime macOS tool Sequel Pro. Sequel Ace is a fast, easy-to-use Mac database management application for wor

Sequel-Ace 3.4k Aug 5, 2021
A simple but highly customizable `UICollectionViewLayout` for `UICollectionView`.

CollectionViewPagingLayout Layout Designer SnapshotTransformView ScaleTransformView StackTransformView Custom implementations About This is a simple b

Amir Khorsandi 1.3k Aug 4, 2021
OS X and iOS application and framework to play with the Apple Push Notification service (APNs)

Pusher OS X and iOS application and framework to play with the Apple Push Notification service (APNs) Installation Install the Mac app using Homebrew

noodlewerk 6.1k Jul 29, 2021
The easiest way to get started with PostgreSQL on the Mac

Postgres.app The easiest way to run PostgreSQL on your Mac Includes everything you need to get started with PostgreSQL Comes with a pretty GUI to star

Postgres.app 5.8k Aug 1, 2021
The easiest way to install and switch between multiple versions of Xcode - with a mouse click.

Xcodes.app The easiest way to install and switch between multiple versions of Xcode. If you're looking for a command-line version of Xcodes.app, try x

Robots and Pencils 1.1k Jul 25, 2021
MQTT X - Elegant Cross-platform MQTT 5.0 Desktop Client

MQTT X English | 简体中文 | 日本語 MQTT X is a cross-platform MQTT 5.0 client tool open sourced by EMQ, which can run on macOS, Linux and Windows, and suppor

Scalable Enterprise MQTT Broker 1.2k Aug 5, 2021
A macOS app which helps you manage dependency releases in your Podfile.

Pods Updater Why this app? I believe it should be up to the developer to determine the exact versions of dependencies used in their projects. When add

Kizito Nwose 516 Jul 23, 2021
Use the Touch Bar on any Mac

Touch Bar Simulator Use the Touch Bar on any Mac Launch the Touch Bar simulator from anywhere without needing to have Xcode installed, whereas Apple r

Sindre Sorhus 1.5k Aug 4, 2021
ColorSet is a macOS utility and framework allowing developers to manage custom interface colors with ease.

ColorSet About ColorSet is a macOS utility and framework allowing developers to manage custom interface colors with ease. Rationale As of macOS 10.14

DigiDNA 126 Aug 5, 2021
A free, native Apple macOS app for testing HTTP/REST endpoints

About CocoaRestClient is a Mac OS X app for testing HTTP/Restful endpoints. I love curl, but sometimes I need my output XML or JSON pretty printed. I

Mike Mattozzi 2.2k Aug 2, 2021
A scriptable scratchpad for developers. In slow yet steady progress.

Boop. Website • Download from GitHub • Get on the Mac App Store Documentation • Find more scripts How to get Boop There are four ways to get Boop. You

Ivan Mathy 2.1k Jul 25, 2021
I got tired of manually exporting every icon size (for Xcode and more), so I made an app to do it.

Easily import, modify, and export icons! Features Natively Exports Xcode iOS MacOS Message Apple Watch Exports JSON for 1 drag import Special Files .i

Liam Rosenfeld 69 Jul 24, 2021
a Cocoa GUI for /etc/hosts

Hosts, a system preference pane to manage your hosts file Hosts adds a preference pane to your system preferences which lets you toggle your host file

Voxin Muyli 1.5k Aug 3, 2021
The debug application for Apple Push Notification Service (APNs).

Knuff The debug application for Apple Push Notification Service (APNs). Download the latest version Features Send push notifications to APNS (Apple Pu

Knuff 4.9k Jul 29, 2021