Adium

Opened 12 years ago

Closed 9 years ago

Last modified 9 years ago

#7438 closed defect (fixed)

Beachballing when required messagestyle parts missing

Reported by: mathuaerknedam Owned by: Catfish_Man
Milestone: Adium 1.4.2 Component: Adium Core
Version: 1.2svn Severity: normal
Keywords: Cc:
Patch Status:

Description

If a loaded messagestyle is missing required parts (like Status.html) Adium beachballs when opening the Messages pane of the preferences. Interestingly, if the Status.html is an alias, Adium will not beachball, but Status messages will not draw. If Status.html is a symlink to Content.html, everything works.

Change History (14)

comment:1 Changed 12 years ago by Catfish_Man

  • Owner changed from nobody to Catfish_Man
  • Status changed from new to assigned

comment:2 Changed 11 years ago by Robby

  • Milestone set to Good idea for "later"

comment:3 Changed 11 years ago by Robby

  • Milestone changed from Good idea for "later" to Adium bugs

comment:4 Changed 9 years ago by evands

  • Resolution set to wontfix
  • Status changed from assigned to closed

I don't think we should have code to work around broken message styles; for bundled styles, we need to ensure they aren't broken, and for adiumxtras.com styles, the reviewer needs to be making sure it works before approving it.

comment:5 Changed 9 years ago by Robby

  • Milestone Adium bugs deleted

comment:6 Changed 9 years ago by mathuaerknedam

This isn't only a problem with broken message styles. A 1.4-compliant message style can beachball 1.3.

comment:7 Changed 9 years ago by evands

  • Resolution wontfix deleted
  • Status changed from closed to new

We can't fix 1.3, though, as we won't be doing another release in that series. However, if that's the case, we should probably futureproof to whatever extent is reasonable.

Could you provide an example of a message style which beachballs Adium 1.4b19?

comment:8 Changed 9 years ago by mathuaerknedam

I can't think of any "legal" styles that will beachball 1.4b19. To the best of my knowledge, all no message style parts have become "optional" in 1.5.

comment:9 Changed 9 years ago by evands

Rather than peppering the code with checks, maybe we should add an "AIMinimumVersionSupported" key to the message style info.plist?

comment:10 Changed 9 years ago by mathuaerknedam

I would think this would work. It seems like messageViewVersion should be able to be used for this, but I don't know that it actually maps to Adium version in the necessary way.

comment:11 Changed 9 years ago by evands

We currently happily load *any* version. We could refuse to load versions after the current known version number. The only problem is that this would guarantee that no future message style (with a new version) could possibly be backwards compatible.

Maybe we should have two keys:

messageViewVersion
minimumCompatibleMessageViewVersion

such that I can, say, have a version 6 message style which is compatible with all versions back to version 3.

comment:12 Changed 9 years ago by mathuaerknedam

It's easy enough for me to add new keys into the styles, but I don't know how to go about adding the the code to Adium so that it checks a style's key. This seems like the sort of thing that would be insert into as early a release as possible since we can never go back and retroactively futureproof a released version against future style changes. Can we get it in 1.4.2?

comment:13 Changed 9 years ago by Evan Schoenberg

  • Resolution set to fixed
  • Status changed from new to closed

(In c7323a40d94f) Added a MessageViewVersion_MinimumCompatible key to message style Info.plist keys. If set, Adium will refuse to load the style if it has a minimum version greater than its latest known version. This way, a message style which depends upon a hypothetical future version 5 message style can gracefully fail to load in Adium 1.4.2 which knows nothing of it; however, a message style using version 5 which is backwards compatible with version 4 can still be loaded. Fixes #7438 (for future iterations of the problem; nothing can be done for the described historical incompatibility).

comment:14 Changed 9 years ago by Robby

  • Milestone set to Adium 1.4.2
Note: See TracTickets for help on using tickets.