• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hypothesis / h
70%
master: 97%

Build:
Build:
LAST BUILD BRANCH: realtime-update-v1-h-only-1
DEFAULT BRANCH: master
Repo Added 06 Mar 2015 06:33AM UTC
Files 34
Badge
Embed â–¾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH optimistic-save
branch: optimistic-save
CHANGE BRANCH
x
Reset
  • optimistic-save
  • 1142-no-client-side-error-message-when-saving-annotation-fails
  • 1334-latest-pdfjs
  • 1542-source-url-not-visible-on-older-annotations
  • 1612-hide-orphans
  • 1615-update-timestamps
  • 174-let-me-change-my-email
  • 1755-handle-internal-server-error-in-registration-form
  • 1759-fix-reply-permissions
  • 1776-bring-padded-scrolling-back
  • 179-focus-in-username-field-when-sign-in-is-clicked
  • 1815-streamer-doc-not
  • 1916-message-not-available-in-stream
  • 1916-message-not-available-in-stream-2
  • 1916-rework-stream
  • 1916-stream-cards
  • 1916-stream-message-not-available
  • 1916-stream-message-not-available-2
  • 1979-clear-selected-annotations
  • 1979-fix-annotation-creation
  • 1992-fix
  • 2013-fix-fuzzy
  • 2026-module-isolate-env
  • 2033-fix-focusing
  • 2041-fix-show-diff
  • 2052-scroll-to-sign-in-form-on-clicking-sign-in-link
  • 2053-scroll-sidebar-to-new-annotations
  • 2053-scroll-sidebar-to-new-annotations-2
  • 2263-tooltip-for-note-button
  • 2273-gunicorn-ssl-crash
  • 2326-fix-search-with-no-document
  • 2440-replies-dont-match-search-normalized-url-queries
  • 2440-replies-dont-match-search-normalized-url-queries-2
  • 2441-fix-change-email-form
  • 2484-fix-page-notes
  • 2515-fix-uri-normalization-crash-when-no-hostname
  • 2519-crash-when-annotation-document-link-is-None
  • 2521-hide-unanchored-warnings-when-not-on-sidebar
  • 2525-new-annotations-disappearing
  • 2555-fix-email-notifications
  • 2589-fix-bug-incorrect-search-results
  • 2598-enable-literal-mid-word-underscores
  • 2701-delete-unsaved-drafts-on-sign-out
  • 2702-fix-diplay-of-num-replies-on-collapsed-replies
  • 2713-change-permissions-when-moving-annotations-btwn-groups
  • 2716-save-permissions-to-drafts
  • 2728-misc-AnnotationController-refactors-part-2
  • 2728-refactor-annotation-controller
  • 2728-refactor-annotation-controller-tests
  • 2728-refactor-highlight-saving
  • 2728-remove-USER_CHANGED-event-from-AnnotationController
  • 2728-translate-annotation-controller-to-js
  • 2771-fix-notifications-crash-on-parent-with-no-text
  • 2799-dont-update-wrong-annotations
  • 2810-no-error-on-sign-in-to-unactivated-account
  • 2823-fix-annotation-thread-collapsing
  • 2838-fix-wrong-group-shown-on-stream
  • 2845-unsafe-eval-on-github
  • 2848-TypeError-Cannot-read-property-show_sidebar_tutorial-of-undefined
  • 2852-fill-hole-in-groups-dropdown-button
  • 2928-restore-counting-of-private-and-group-annotations-in-badge
  • 2NiiPelT-limit-group-names-to-25-characters
  • 3001-fix-hypothesis-admin-command
  • 3007-fix-tags-autocomplete-dropdown-css
  • 391-add-atom-feeds
  • 391-add-atom-feeds-2
  • 404-should-be-a-404
  • 404-style-fix
  • 6vnMlymZ-alias-tag-to-tags-in-search-api
  • 800-fancy-selected-annotations
  • 930-loading-icon
  • 9sqXWtNi-fix-title-for-local-file-pdf-annotations
  • AnnotationController-domain-model-view-model-refactor
  • BPA1eZ9O-add-developer-api-tokens
  • EqRZwdZC-clear-selection-before-creating-new-annotation
  • Kj8vWkme-show-filenames-of-local-files
  • NUoaiUO4-add-create-account-banner
  • PfK5vbcM-add-tutorial-to-sidebar
  • TPUsXCk4-add-media-embeds-feature
  • User.get_by_id-refactor
  • User.get_by_id-refactor-2
  • accounts-views
  • add-admin-users
  • add-anno-count-to-admin
  • add-api-cors-support
  • add-authors-to-rss
  • add-caching-to-Chrome-badge-api
  • add-clickToClose-option
  • add-debug-arg-to-buildext
  • add-docs-for-how-authenticate-to-the-api
  • add-guidelines-for-model-code
  • add-help-text-to-nipsa
  • add-hpt.is-support-to-chrome-extension
  • add-ie-autodetect
  • add-jscs-to-hound-config
  • add-pyramid-redis-sessions-dependency
  • add-pyroma-dependency
  • add-robots-txt
  • add-rss
  • add-sphinx-httpdomain-dependency
  • add-staff-users
  • add-unit-test-factories
  • add-userid-domain-setting
  • admin-account-deletion
  • admin-views-cleanup
  • alembic-logging
  • allow-disabling-websocket-uri-equiv
  • allow-missing-parents
  • allow-missing-permissions
  • anchoring-rewrite
  • angular-1.4
  • angular-csp
  • annotation-element-directive
  • annotation-html-presenter
  • annotation-test-cleanup
  • annotation-test-refactor
  • annotator-css-separation
  • api-blueprint
  • api-exception-handling
  • api-view-tests-refactor
  • api-view-tests-refactor-event
  • app-to-extension-comms
  • atom-feed-link-tweaks
  • autoprefix_css
  • aw/csp
  • aw/features_pending_removal
  • aw/sentry-logging
  • b13OFeU2-allow-skinnier-sidebar
  • b9PFMDM7-add-activate-button-to-admin-users-page
  • better-custom-pdf-viewer-handling
  • better-dockerfile-caching
  • better-handling-of-missing-blacklist
  • better-login-form
  • blank-og-description
  • build-artifacts
  • building-chrome-extension-docs
  • buildkite-pipeline
  • bump-initial-load-count
  • canceling-edits-loses-changes
  • capture-request-context-for-sentry
  • centralise-api-storage-calls
  • centralise-models
  • check-manifest
  • chrome-error-handling
  • chrome-inject-error-capture
  • claim-account
  • claim-invite
  • clarify-effective-principals
  • clean-up-debug-helpers
  • clean-up-thread-show-logic
  • cleaner-direct-es-access
  • cleanup-pdf-anchoring
  • cleanup-socket-threading-mapper-routes
  • cleanup-transactions
  • client-auth-refactor
  • code-style-conformance
  • conditional-http
  • consolidate-gitignore
  • consolidate-templates
  • consolidate-validation
  • constraint-naming-convention
  • convert-filters-to-functions
  • convert-views-module-to-package
  • correct-x-annotator-auth-token-to-authorization
  • coverage
  • coverage-does-not-include-tests
  • create_group_ux_tweaks
  • csp-friendly-settings
  • csrf-tween
  • csv-unicode-fix
  • debug-logging-database
  • decaf
  • decouple-tm-from-session
  • decouple_app_template_from_pyramid
  • decouple_ext_build_from_pyramid
  • deduplicate-profile-pages
  • deduplicate-script
  • defensive-feed-construction
  • deform-form-rendering
  • dehorusify-authcontroller
  • dehorusify-forgotpasswordcontroller
  • dehorusify-profilecontroller
  • dehorusify-registercontroller
  • describe-virtualenvs-in-install-docs
  • develop
  • disentangle-form-helpers
  • dismiss_app_route
  • do-not-update-annotation-times-too-often
  • do-not-via-via
  • docker-deployment-docs
  • docker-entrypoint
  • docker-prod
  • docs-tweaks
  • document-id-param-of-search-api
  • document-model-tweaks
  • document_link_cleanups
  • document_link_refactor
  • dont-autofocus-group-share-link
  • dont-expand-canonical-uris
  • dont-explode-on-invalid-json
  • dont-open-welcome-page-when-admin-install
  • dont-save-null-data-to-draft-store
  • dont-sentry-404s
  • drop-cc0-license-from-only-me-annotations
  • dumb-makefile
  • editor-js-conversion-and-tests
  • editor-markdown-commands-refactor
  • editorconfig
  • embed-instruction-hostname
  • enriched-stream
  • excerpt-hysteresis
  • explicit-settings-for-websocket
  • explicitly-state-visibility-level
  • exponential-backoff-features
  • export-showframe
  • extend-search-api-docs
  • extension-analytics
  • faster-api
  • faster-database-tests
  • faster-docker
  • faster-travis
  • feature-flags-admin
  • features-pending-removal
  • finish-indirection-through-storage
  • firefox-addon-fixes
  • firefox-webextensions-build
  • fix-2429
  • fix-2452
  • fix-a-comment
  • fix-a-pep257-warning
  • fix-admin-annotations-query
  • fix-angular-is-not-defined
  • fix-bouncer-url
  • fix-broken-document-equivalence-lookups
  • fix-broken-promises-ie
  • fix-broken-uri-query
  • fix-changing-size-socketlist
  • fix-crash-on-login-with-non-json-body
  • fix-digest-problem
  • fix-docker-build
  • fix-docs-help
  • fix-failing-tests
  • fix-form-button-gradients
  • fix-group-annot-edit-from-stream
  • fix-group-page-js
  • fix-groups-principals
  • fix-groups-race
  • fix-groups-views
  • fix-guest-embedding
  • fix-http-syntax-highlighting-in-api-docs
  • fix-hypothesis-admin-command
  • fix-invalid-manifest-error-when-building-stage-and-prod-chrome-extensions
  • fix-links-in-readme
  • fix-logout
  • fix-nipsa-migration
  • fix-password-reset
  • fix-passwordresetevent
  • fix-pdf-uris
  • fix-realtime
  • fix-realtime-for-replies-standalone
  • fix-registration-process
  • fix-replies-hover-highlight
  • fix-reply-notification-worker
  • fix-signed-out-top-bar
  • fix-split-user
  • fix-standalone-reply-pages
  • fix-stream-banner-flash
  • fix-streamer-for-namespaced-nsq
  • fix-subscription-event
  • fix-tag-links
  • fix-token-command-for-non-default-ports
  • fix-tooltip-on-share-icon
  • fix-unsubscribe-auth
  • fix-video-embeds-in-firefox-less-than-45
  • fix-websocket-auth-policies
  • focus-on-a-group
  • four-space-js
  • frame-rpc
  • front-page-font-size-quick-fix
  • frontend-cleanups
  • frontend-fixes
  • fullscreen-video-embeds
  • generate-token
  • gevent-bump
  • gh1900-chrome_pdf_viewer_detection
  • gh2590-app_init_race
  • gh2671-group_notification_consistency
  • gh2675-wait_for_features
  • gh2819-new-annot-timestamp
  • gh2820-date-formatting-perf
  • gh2830-chrome_ext_inline_install
  • github-2686-fix-invalid-permissions-when-creating-annotations-when-signed-out
  • group-page-update
  • group-share-page-design-tweaks
  • guest-embedding
  • gulp-frontend-build
  • gulp-frontend-build-admin
  • hSxsjvim-add-WebTrends-to-blacklisted-URL-params
  • handle-missing-permissions-fields
  • handle-null-targets
  • hide-old-sort-control-in-sidebar
  • homepage-aak-banner
  • host-sidebar-split
  • hound-python
  • ie-cache-fixes
  • increase-max-annot-body-size
  • isolate-config-env
  • jpm
  • jscs-require-spaces-after-function
  • jscsrc
  • jshint-tweaks
  • jsonld-renderer
  • jsonschema-annotation-validation
  • jwt-bearer
  • kill-comment-icon-on-card
  • kill-sqlite
  • lenazun-fixed-link
  • lenient-search
  • limit-what-admins-can-do
  • lint-tweaks
  • lookahead-tags-3
  • make-activation-fields-nullable
  • make-bridge-a-factory
  • manage-own-search-client
  • master
  • match-tags-according-to-mapping-analyzer
  • move-auth-to-api
  • move-es-config-into-search
  • move-i18n-helper
  • move-login-form-to-directive
  • move-models-to-api
  • move-nipsa-to-app
  • move-nipsa-to-prepare
  • move-token-to-app
  • multitarget
  • namespaced-nsqd
  • new-group
  • ng-annotate
  • ng-csp-everywhere
  • ng15-upgrade
  • nipsa
  • no-explicit-typechecks
  • nodtm
  • oWe60V8v-signal-when-there-are-public-annotations-on-a-page
  • observer-3
  • one-time-bindings
  • open-sidebar-when-annot-fragment-present
  • optional-websocket
  • p-decouple_app_template_from_pyramid
  • packaging-cleanups
  • paginate-groups-admin
  • paste-api-entrypoint
  • percolator
  • percolator-sse
  • pin-webassets
  • postgres
  • postgres-annotations
  • postgres-documents
  • postgres-read-write
  • presalt-hashids
  • prevent-annotation-attempt-when-not-signed-in
  • proper-feature-flags
  • prospector-allow-id-as-valid-name
  • publish-to-a-group
  • publish-to-a-group-permissions
  • publish-to-a-group-squashed
  • publisher-cli-commands
  • purge-fontawesome
  • purge-yaml
  • py3-compat
  • quote-hysteresis
  • r-squash_test_error_logging
  • randomize-websocket-reconnects
  • realtime-update-v1-1
  • realtime-update-v1-h-only-1
  • redirect-after-login
  • redirect-after-login-groups-join
  • redirect-to-welcome-after-claim
  • refactor-accounts-view-config
  • refactor-auth-controller-test
  • refactor-blocklist
  • refactor-chrome-badge-client
  • refactor-chrome-tab-error-handling
  • refactor-search
  • refactor-ux
  • refactor_search
  • releaser
  • reload-annotations-auth-change
  • remove-256-character-limit-from-uri-column
  • remove-angular-animate
  • remove-blocklist
  • remove-broken-cla-links
  • remove-claim-feature-flag
  • remove-claim-invite-module
  • remove-dead-code
  • remove-dependencies-on-threading
  • remove-diff-remnants
  • remove-es-test
  • remove-get-by-userid
  • remove-groups-feature-flag
  • remove-hiring-banner
  • remove-horus-from-subscriptions
  • remove-legacy-firefox-extension
  • remove-model-dependence-from-search
  • remove-momentjs
  • remove-notification-flag
  • remove-old-capability-url-serializer
  • remove-old-feature-flag-data
  • remove-old-internals-docs
  • remove-pulse-remnants
  • remove-queue-flag
  • remove-search-normalized-flag
  • remove-show-unanchored-feature
  • remove-streamer-flag
  • remove-unanchored-annotations-flag
  • remove-unnecessary-flashes
  • remove-unnecessary-group-filter
  • remove-unused-annotation-deleted-property
  • remove-unused-streamer-code
  • remove_assets_ext_build_arg
  • replace-%20-with-space-when-displaying-URIs
  • replace-accounts-forms
  • replace-hashids-with-pubids
  • replace-profile-form
  • report-form-level-errors
  • resource-refactoring
  • script-subscribers
  • search-endpoint-default-and
  • search-for-one-uri
  • search-module-to-package
  • send-activation-emails-from-worker
  • sentry-stream-errors
  • separate-controllers
  • separate-service-uri-from-base-uri
  • separete-host-service
  • session-load-retry
  • set-min-chrome-version
  • share-a-group
  • sharing-via-link-from-extension
  • sheetaluk/298-add-product-version-and-environment-info-to-the-tool
  • show-orphans
  • show-traceback-on-exception-in-dev
  • sidebaropenclose-callback
  • signin-directive
  • silence-horus-sqlalchemy-warnings
  • simpler-layouts
  • simpler-version-management
  • simplify-admin-permission-handling
  • simplify-code
  • simplify-db-session-handling
  • simplify-routing
  • simplify-server-side-auth-code
  • simplify-streamer
  • small-UX-improvements
  • some-dev-install-docs-fixes
  • speedup-npm-deps-checking
  • stable
  • standalone-websocket-server
  • straightforward-api-inclusion
  • stream-group-hashid-query
  • streamer-workqueue
  • style
  • support-epub-integrations
  • swagger-docs
  • syncbridge
  • t105-group_push_notifications
  • t120-client_sentry
  • t158-truncated_annot_design
  • t187-nav_blog_tweaks
  • t187-new_homepage_design
  • t87-group_scope_dropdown_ui
  • t89-combined_scope_save_btn
  • t91-sort_dropdown_move_to_top_bar
  • test-fix-tests
  • test-mock-version-on-travis
  • thread-collapsing
  • thread-collapsing-redux
  • toastr
  • toggle-resize-tooltip
  • toggle-sidebar-tooltip
  • tooltips-on-adder
  • topbar-toolbar-harmony
  • touch
  • translate-annotation-mapper
  • travis-node-upgrade
  • travis-node-upgrade-test
  • trello-135-while-drafting-an-annotation-the-group-name-or-lack-thereof-should-reflect-its-current-visibility
  • trello-143-make-replies-default-to-group-and-visibility-of-parent
  • trello-144-add-a-list-of-most-recently-annotated-by-the-group-urls-to-the-group-page
  • trello-155-simplify-group-share-link
  • trello-176-enable-staff-to-look-up-user-email-addresses
  • trello-177-change-the-default-behavior-of-the-embed-to-highlights-on-by-default
  • trello-178-new-homepage
  • unified_session_and_features
  • update-docs
  • update-package-data
  • upgrade-annotator-store
  • uri-module
  • uri-normalisation
  • urlencode-badge-uri
  • use-python-time-where-possible
  • userid-symbol-consistency
  • username-or-email-address
  • users-admin-always-query-by-userid
  • users-dashboard
  • v0.4.2
  • v0.5.0
  • v0.5.1
  • v0.6.0
  • v0.7.0
  • v0.7.1
  • v0.7.10
  • v0.7.11
  • v0.7.12
  • v0.7.13
  • v0.7.2
  • v0.7.3
  • v0.7.4
  • v0.7.5
  • v0.7.6
  • v0.7.8
  • v0.7.9
  • v0.8.0
  • v0.8.1
  • v0.8.10
  • v0.8.11
  • v0.8.12
  • v0.8.13
  • v0.8.14
  • v0.8.15
  • v0.8.2
  • v0.8.3
  • v0.8.4
  • v0.8.5
  • v0.8.6
  • v0.8.7
  • v0.8.8
  • v0.8.9
  • v0.9.0
  • v0.9.1
  • v0.9.2
  • v0.9.3
  • validate-permissions-field
  • vendor-assets-from-npm
  • via
  • via-plain-html-form
  • viewable-visible
  • viewable-vs-visible
  • visible-vs-viewable
  • visual-truncation
  • w/community-guidelines-signup
  • w/csv-groups-report
  • w/groups-report-in-admin-dashboard
  • w/pwd-reset
  • w/remove-2char-pw-copy
  • warn-for-relative-import
  • wdtO5Zzk-dont-404-when-opening-an-old-activation-link
  • welcome-page-tweaks
  • ws_exception_handling
  • xgknj2RP-disable-Chrome-badge-on-certain-pages
  • xwyKzlwp-strip-via-prefixes-in-normalization
  • yapf-config

pending completion
9907

push

travis-ci

robertknight
Prevent double-posting of new annotations

When the user clicks the 'Post' button to create an annotation,
optimistically switch the card back to View mode but display
a 'Saving...' indicator in place of the Reply/Edit/Delete links.

This makes the UI appear more responsive when the user clicks
the Post button and also prevents an issue where the user could
click 'Post' multiple times during the save and create multiple
annotations.

 * Fix a possible inconsistency between the 'Post' button's enabled
   state and whether or not the save() function can succeed.

   The hasContent() and isShared() methods also already have tests,
   so this lets us remove several redundant tests.

 * Fix inconsistency in the return type of the save() function -
   always return a promise.

 * Treat negative status values as network errors as well as 0.
   If the server is unreachable, the real status value may be -1.

Fixes #2864

2678 of 3810 relevant lines covered (70.29%)

0.7 hits per line

Relevant lines Covered
Build:
Build:
3810 RELEVANT LINES 2678 COVERED LINES
0.7 HITS PER LINE
Source Files on optimistic-save
Detailed source file information is not available for this build.

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
9907 optimistic-save Prevent double-posting of new annotations When the user clicks the 'Post' button to create an annotation, optimistically switch the card back to View mode but display a 'Saving...' indicator in place of the Reply/Edit/Delete links. This makes th... push 26 Jan 2016 08:20AM UTC robertknight travis-ci pending completion  
9855 optimistic-save Prevent double-posting of new annotations When the user clicks the 'Post' button to create an annotation, optimistically switch the card back to View mode but display a 'Saving...' indicator in place of the Reply/Edit/Delete links. This makes th... push 22 Jan 2016 10:45AM UTC robertknight travis-ci pending completion  
See All Builds (3935)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc