Giter Site home page Giter Site logo

realm-browser-osx's Introduction

NOTE - This tool is now deprecated!

Our future development efforts will go into the new cross platform Realm Studio, now available for Mac, Linux and Windows users! You can download it from the Realm website. Should you have any feedback or issues, please create issues in the Realm Object Server repo.

Realm Browser

Realm Browser is a small utility for Mac OS X that lets you open .realm files to view and modify their contents.

Realm Browser

Build Status

Installing

Mac App Store (Recommended)

Download the app in the Mac App Store.

Manual Build

Download the project, run pod install and build the Realm Browser scheme using Xcode 8.

GitHub Releases

Download the built app in releases.

Homebrew Cask

If you have homebrew installed, simply run brew cask install realm-browser. You may need to run brew cask update if homebrew says realm-browser is not available.

Design Goals

The main design goals of Realm Browser are:

  • Allow quick and easy access to the contents of .realm files.
  • Be able to modify the contents of .realm files without needing to use code.
  • Make it easier to automatically generate Realm Object source files.

Contributing

See CONTRIBUTING.md for more details!

This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].

License

The source code to Realm Browser is licensed under the Apache License 2.0.

realm-browser-osx's People

Contributors

alazier avatar astigsen avatar austinzheng avatar bdash avatar bmunkholm avatar chrisamanse avatar chrischares avatar dhmspector avatar emanuelez avatar fergusean avatar greatape avatar icanzilb avatar insidegui avatar jakob avatar jpsim avatar kishikawakatsumi avatar ksibod avatar mattbauer avatar mrackwitz avatar mrh-is avatar radu-tutueanu avatar redetection avatar segiddins avatar stel avatar tgoyne avatar timoliver avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

realm-browser-osx's Issues

Creating new .realm files

Introducing a menu item that creates a new, empty .realm file, and potentially guides the user in adding new data to it.

Allow writing a copy of an open Realm to a new file

When determining whether excessive file sizes is caused by version pinning a helpful first step can be to write a copy of the Realm to a new file to see whether that shrinks the file. It'd be convenient if the browser supported doing this.

Run unit tests in CI

Travis only builds the browser, but it should really be running the unit tests to confirm that everything still works. The current CI script is xctool -workspace RealmBrowser.xcworkspace -scheme RealmBrowser build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO.

Weird editing behaviour on dates

When editing dates it sometimes show up a small data picker, sometimes edits it as string. Seems a bit random depending on how you click on it.

Enhance adding / modifying object properties

While it's already possible to modify individual properties of objects, the ability to add an manipulate data within .realm files needs to be greatly enhanced.

Essential Operations

  • Add new rows
  • Delete entire rows
  • Duplicate rows
  • Copy rows
  • Paste rows

Provide handling for specific file format version exceptions

Once NULL support is published in Realm, introducing with it, a file format upgrade, there may be unique instances where a combination of the Realm Browser's version of Realm may not support specific version numbers of Realm files (Both potentially older or newer).

While this is not generally expected, error checking will be added to Realm Core in order to account for these scenarios when and if they arise. In that case, Realm Browser also needs specific mechanisms in order to cope with any versioning exceptions that Core might throw.

Can't open Swift realm databases with Browser

I'm just getting started with Realm swift using the swift-2.0 branch. I've both successfully written a program that can write to and read from a database as well as run the TableView sample. In both cases, when I attempt to open the default.realm file, which is located in my simulator directory, I get an "Invalid database" error.

Since I haven't been able to figure out how to upload the .realm files, here are links to them on Dropbox:

https://www.dropbox.com/s/u1dznkm77wtoh12/TableView.realm?dl=0

https://www.dropbox.com/s/6ps10qpbzt6uek3/MyApp.realm?dl=0

Implement an upper limit on the number of Realm files that can be opened at once

In instances such as the Realm Plugin where multiple Realm files can be programmatically opened at once in the Browser, we'll need to implement an upper limit to ensure that the Browser does't get overloaded.

At present, if a sufficiently large number of Realm files is passed to the Browser, it'll attempt to open them all until it runs out of resources.

Why is the bundle ID hardcoded?

The bundle ID in this repo is io.realm.realmbrowser, compared to io.realm.${PRODUCT_NAME:rfc1034identifier} in realm-cocoa, which should resolve to the same thing. Why was this change made?

Determine how to version the browser

Does it make sense to update the browser on every realm release? If so, should we automate cutting releases (e.g. commit & tag realm-browser repo when running the release_cocoa CI job)?

Space Browser designs

From @yoshyosh on January 22, 2015 2:13

Here are the browser designs https://www.dropbox.com/sh/l4oby8qv58aom6w/AABNKpT_AqopP-1QoQgb9bKda?dl=0

The main problem comes from accessing linked objects. With this design, when you click a link it will create a new table to the right of the link you clicked. This will allow data to be traversed infinitely.

We need to see what this feels like, with general json data samples like an actual request from the foursquare api, or anything more complex.

The prototype and experience are the most important at this stage vs being fully integrated with Realm

Copied from original issue: realm/realm-swift#1387

Realm file format icon

Create a new icon file in the same design vein as Apple's document formats to be used for .realm files that have been associated with be opened in Realm Browser.

Realm Browser does not refresh when underlying data changes

Realm Browser does not automatically refresh when the underlying data changes due to insert, update, delete operation. I have to manually close the Realm Browser and then open it again to see the changes.

Realm Browser
Version 0.93.2 (7)

Search field not working

The search field seems to be broken on version 0.93.2. Clicking on it does not allow you to write in it, so there is no way to search.

Release Realm Browser on the Mac App Store

From @timanglade on April 6, 2015 5:55

Since the browser is a relevant tool for users who otherwise don’t need to download realm-cocoa (e.g. Java developers, administrators, app designers, etc.), it makes sense at this point to distribute the browser on the app store (in addition to including it in our .zip realm-cocoa releases).

Copied from original issue: realm/realm-swift#1733

Make better screenshot for App Store & Docs

The browser itself doesn’t have much UI — it’s all about the data. So if the data is crappy, the browser looks crappy.

Can we make a new screenshot with the following issues fixed?

  1. Use real classes with a real schema people can understand
  2. Show a model less columns so the screenshot doesn’t look too busy
  3. Make sure the data in the column is consistent so the columns look regular (In the current screenshot the first integer column has many orders of magnitude)

Simple search implementation

The ability to insert a search query string and have it return a list of matching results from all data types.
This could include potentially fuzzy logic such as having strings like 'Monday' resolve against date objects.

Display common binary data formats

For data objects containing common format data (such as images and potentially sounds), the browser should be smart enough to identify these by their magic numbers and display a preview of the data.

Formats natively supported by OS X

Images Sounds
JPEG AAC
GIF AIF
TIFF CAF
PNG MP3
PDF MP4
------ M4A
------ WAV

Set up continuous integration

There are a handful of unit tests for the browser, and it'd be great if any PR & push to the master branch would be automatically validated by running it in a continuous integration environment. I'd recommend setting up something like Travis CI, so that CI results can be available publicly, and not further strain our internal CI infrastructure.

Realm Browser crashing with Realm v0.94.0

The Realm Browser was working perfectly before Realm v0.94.0, but since updating (we moved to cocoapods too); the browser now crashes if it is open while a change to the Realm Database is made in the running Simulator. I am using the new version of the Browser from the AppStore.

I'm able to reproduce this 100% of the time. Here's the crash info...

Process:               Realm Browser [78299]
Path:                  /Applications/Realm Browser.app/Contents/MacOS/Realm Browser
Identifier:            io.realm.realmbrowser
Version:               0.93.2 (7)
App Item ID:           1007457278
App External ID:       812659827
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Realm Browser [78299]
User ID:               501

Date/Time:             2015-08-06 11:15:19.276 -0400
OS Version:            Mac OS X 10.10.4 (14E46)
Report Version:        11
Anonymous UUID:        D97EB571-3045-7E10-D89F-2FB0D4CF110D


Time Awake Since Boot: 610000 seconds

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fff87bf6286 __pthread_kill + 10
1   libsystem_c.dylib               0x00007fff91f2cb53 abort + 129
2   org.cocoapods.Realm             0x000000010c23fbc9 please_report_this_error_to_help_at_realm_dot_io + 9
3   org.cocoapods.Realm             0x000000010c23fd88 realm::util::terminate_internal(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) + 328
4   org.cocoapods.Realm             0x000000010c1f9917 realm::util::terminate(char const*, char const*, long) + 473
5   org.cocoapods.Realm             0x000000010c350e22 realm::Table::update_accessors(unsigned long const*, unsigned long const*, realm::Table::AccessorUpdater&) + 290
6   org.cocoapods.Realm             0x000000010c2f7bb5 void realm::_impl::TransactLogParser::do_parse<realm::Group::TransactAdvancer>(realm::Group::TransactAdvancer&) + 5285
7   org.cocoapods.Realm             0x000000010c2f1248 realm::Group::advance_transact(unsigned long, unsigned long, realm::BinaryData const*, realm::BinaryData const*) + 168
8   org.cocoapods.Realm             0x000000010c2fc0a3 realm::SharedGroup::advance_read(realm::SharedGroup::VersionID) + 355
9   org.cocoapods.Realm             0x000000010c22d1f5 -[RLMRealm handleExternalCommit] + 124
10  org.cocoapods.Realm             0x000000010c2301ae -[RLMNotifier listen]::$_0::__invoke(void*) + 38
11  com.apple.CoreFoundation        0x00007fff87ccba01 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
12  com.apple.CoreFoundation        0x00007fff87cbdb8d __CFRunLoopDoSources0 + 269
13  com.apple.CoreFoundation        0x00007fff87cbd1bf __CFRunLoopRun + 927
14  com.apple.CoreFoundation        0x00007fff87cbcbd8 CFRunLoopRunSpecific + 296
15  com.apple.HIToolbox             0x00007fff8678056f RunCurrentEventLoopInMode + 235
16  com.apple.HIToolbox             0x00007fff867801ee ReceiveNextEventCommon + 179
17  com.apple.HIToolbox             0x00007fff8678012b _BlockUntilNextEventMatchingListInModeWithFilter + 71
18  com.apple.AppKit                0x00007fff8e8008ab _DPSNextEvent + 978
19  com.apple.AppKit                0x00007fff8e7ffe58 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 346
20  com.apple.AppKit                0x00007fff8e7f5af3 -[NSApplication run] + 594
21  com.apple.AppKit                0x00007fff8e772244 NSApplicationMain + 1832
22  libdyld.dylib                   0x00007fff882fc5c9 start + 1

Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0   libsystem_kernel.dylib          0x00007fff87bf7232 kevent64 + 10
1   libdispatch.dylib               0x00007fff8e38ca6a _dispatch_mgr_thread + 52

Thread 2:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 3:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 4:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 5:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 6:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 7:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 8:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 9:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 10:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 11:
0   libsystem_kernel.dylib          0x00007fff87bf14de mach_msg_trap + 10
1   libsystem_kernel.dylib          0x00007fff87bf064f mach_msg + 55
2   com.apple.CoreFoundation        0x00007fff87cbdeb4 __CFRunLoopServiceMachPort + 212
3   com.apple.CoreFoundation        0x00007fff87cbd37b __CFRunLoopRun + 1371
4   com.apple.CoreFoundation        0x00007fff87cbcbd8 CFRunLoopRunSpecific + 296
5   com.apple.AppKit                0x00007fff8e8c856b _NSEventThread + 137
6   libsystem_pthread.dylib         0x00007fff8b412268 _pthread_body + 131
7   libsystem_pthread.dylib         0x00007fff8b4121e5 _pthread_start + 176
8   libsystem_pthread.dylib         0x00007fff8b41041d thread_start + 13

Thread 12:: RLMRealm notification listener
0   libsystem_kernel.dylib          0x00007fff87bf721a kevent + 10
1   com.apple.Foundation            0x00007fff92584dc2 __NSThread__main__ + 1345
2   libsystem_pthread.dylib         0x00007fff8b412268 _pthread_body + 131
3   libsystem_pthread.dylib         0x00007fff8b4121e5 _pthread_start + 176
4   libsystem_pthread.dylib         0x00007fff8b41041d thread_start + 13

Thread 13:
0   libsystem_kernel.dylib          0x00007fff87bf694a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff8b41040d start_wqthread + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000000000000006  rcx: 0x00007fff53a4fcb8  rdx: 0x0000000000000000
  rdi: 0x000000000000130f  rsi: 0x0000000000000006  rbp: 0x00007fff53a4fce0  rsp: 0x00007fff53a4fcb8
   r8: 0x00007f99a991b000   r9: 0x0000000000000a00  r10: 0x0000000008000000  r11: 0x0000000000000206
  r12: 0x00007fff53a501c8  r13: 0x0000000000000014  r14: 0x00007fff75585300  r15: 0x0000000000000014
  rip: 0x00007fff87bf6286  rfl: 0x0000000000000206  cr2: 0x00007fff763e4fd8

Logical CPU:     0
Error Code:      0x02000148
Trap Number:     133

Set/modify relations between objects

When creating or modifying objects that contain RLMObject or RLMArray properties, it would be possible to set (and in the case of RLMArray, reorder) the sub-objects that these properties are referencing.

This may require a new UI dialog to be designed.

Automate App Store submissions

Once CI is set up, we can start looking at automating future App Store submissions in line with major milestone releases of Realm Objective-C.

Resolve the reliance on internal Realm API calls

The Realm Browser presently uses a non-public API of Realm named the 'dynamic API' in order to interact with Realm files without having a proper model class implementation present.

This is obviously not an ideal solution as we'd like to have Realm Browser interacting with Realm exactly how users may interact with it.

As such, we're going to be identifying how Realm Browser interacts with the dynamic API and start paving the way to making the private API available publicly.

Improve the experience of the "Open Common Location" menu item

At present, the "Open Common Location" menu item scans all of the most common developer directories on a Mac (iPhone Simulator, Downloads etc) for .realm files.

The experience of this menu item isn't great. Indexing of .realm files is done on the main thread, and can be time-consuming, blocking the Realm Browser's UI.

A review of this feature and how it works should be undertaken, but at the very least, indexing should be moved to a background dispatch queue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.